Конвертирование изображений с помощью библиотеки 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.
Просмотров: 660 | Комментариев: 9
Комментарии
Отзывы посетителей сайта о статье
0101
(21.03.2024 в 18:00):
user, какую версию visustin используете? Старую (7.10 Demo) с лодырём или новая Pro имеется?
ManHunter
(21.03.2024 в 10:56):
Так оно же вроде как заменяемо, накатил поверх новую версию и все.
user
(21.03.2024 в 01:39):
Версию 3.15.3.0
Текущая же - 3.18.0.0
Текущая же - 3.18.0.0
user
(21.03.2024 в 01:27):
Кстати, эту библиотеку вполне по-чесноку
использует программа Visustin.
Чуть ли не единственный софт на басике,
который изредка запускаю, в редких случаях.
использует программа Visustin.
Чуть ли не единственный софт на басике,
который изредка запускаю, в редких случаях.
ManHunter
(20.03.2024 в 19:08):
user, путь этот многие падаваны прошли, на темную сторону перейдя.
user
(20.03.2024 в 18:41):
Так работает, нормально.
Теперь можно лепить уродливый интерфейс выбора файлов,
тулить к нему внутрь dll, навешивать говнопротектор
и пытаться срубить копеечку по-лёгкому.
Мож, повезёт
[смеюсь]
Теперь можно лепить уродливый интерфейс выбора файлов,
тулить к нему внутрь dll, навешивать говнопротектор
и пытаться срубить копеечку по-лёгкому.
Мож, повезёт
[смеюсь]
ManHunter
(20.03.2024 в 18:08):
align 4 <---- вот тут не указал выравнивание
fbitmap dd ?
Поправил, спасибо. Архив обновлен.
fbitmap dd ?
Поправил, спасибо. Архив обновлен.
user
(20.03.2024 в 18:06):
Интересное дело.
Win7/x64.
Используется freeimage.dll (x32)
При запуске файлы конвертирует, но генерируется исключение.
Когда перетранслировал заново, без изменений,
то отрабатывает и завершается нормально и без ошибок.
Новый файл пришлю сейчас, для сравнения.
https://dropmefiles.com/2XVxx
Какая-то кривизна в архивном примере
Win7/x64.
Используется freeimage.dll (x32)
При запуске файлы конвертирует, но генерируется исключение.
Когда перетранслировал заново, без изменений,
то отрабатывает и завершается нормально и без ошибок.
Новый файл пришлю сейчас, для сравнения.
https://dropmefiles.com/2XVxx
Какая-то кривизна в архивном примере
Добавить комментарий
Заполните форму для добавления комментария
Старой хватает
Твоему экзамплу пробовал подсунуть висустиновскую dll - не найденная функция.
Наоборот да, можно попробовать.
Только смысла нет - в демо висустине нет сохранения картинок