
Конвертирование изображений с помощью библиотеки FreeImage

Конвертирование изображений с помощью библиотеки FreeImage
FreeImage - бесплатная библиотека с открытым исходным кодом, предназначенная для работы с изображениями. С ее помощью можно менять размеры изображений, накладывать на них различные эффекты, поворачивать, обрезать, а главное, библиотека FreeImage умеет загружать изображения разных форматов и затем конвертировать их в другие. При этом не требуется установка каких-нибудь кодеков. За удобство пользования приходится платить тем, что размер вашего приложения увеличивается как минимум на 2 мегабайта, и то если упаковать dll. Для Ассемблера это много, для современных приложений, наверное, нормально.
Разберем наиболее востребованное действие - конвертирование изображений. Для работы требуются некоторые константы. Порядок использования и значения прочих констант можно посмотреть в официальной документации и в заголовочных файлах библиотеки.
Code (Assembler) : Убрать нумерацию
- FIF_PNG = 13
- FIF_WEBP = 35
- FIF_JPEG = 2
- FIF_BMP = 0
- PNG_DEFAULT = 0
- WEBP_LOSSLESS = 0x100
- JPEG_QUALITYSUPERB = 0x80
- BMP_DEFAULT = 0
Code (Assembler) : Убрать нумерацию
- ; Проверить исходный файл на соответствие формату
- invoke FreeImage_Validate,FIF_PNG,fname_in
- cmp eax,TRUE
- jne loc_exit
- ; Загрузить исходный файл
- invoke FreeImage_Load,FIF_PNG,fname_in,PNG_DEFAULT
- or eax,eax
- jz loc_exit
- mov [fbitmap],eax
- ; Сконвертировать файл в разные форматы
- invoke FreeImage_Save,FIF_WEBP,[fbitmap],fname_webp,WEBP_LOSSLESS
- invoke FreeImage_Save,FIF_JPEG,[fbitmap],fname_jpg,JPEG_QUALITYSUPERB
- invoke FreeImage_Save,FIF_BMP,[fbitmap],fname_bmp,BMP_DEFAULT
В приложении пример программы с исходным текстом, которая конвертирует графический файл в несколько других форматов. Не забудьте скачать и положить в папку программы библиотеку FreeImage.dll.
Пример программы с исходным текстом (FASM)