Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
Инвертирование изображения дважды не порождает операцию, и, в самом деле, i[5, 5] и i.hflip().hflip()[5, 5] генерируют одинаковый машинный код. Компиляторы D с более совершенным бекэндом могут проводоить еще более агрессивные оптимизации: например, если определили функцию flipXY, которая инвертирует оси X и Y, и rotateCW (для поворота изображения на 90° против часовой стрелки) как src.flipXY().hflip(), тогда четыре удачных вызова rotateCW вырезаются при оптимизации.Впечатляет.
main принимает в качестве аргумента имя файла, который является либо BMP, либо PNG — как реализовать чтение такого файла и его последующую обработку?Как я понимаю пока только есть поддержка чтения/записи BMP и записи PNG?
ICO(Icon)/CUR(Cursor)/BMP, PNM (PPM/PGM/PBM), XPM,
LBM(IFF ILBM), PCX, GIF, JPEG, PNG, TGA, TIFF, and XV thumbnail formats.
Допустим, код поддерживает чтение PNG. И если main принимает в качестве аргумента имя файла, который является либо BMP, либо PNG — как реализовать чтение такого файла и его последующую обработку?
Функциональная обработка изображений в D