Форум » GUI » Артефакты FreeImage.dll - в чем косяк? » Ответить

Артефакты FreeImage.dll - в чем косяк?

kadijoller: Скомпилировал пример MiniGUI\SAMPLES\Advanced\FREEVIEW\ При просмотре картинок заметил вот такой артефакт: Оригинал в других программах выглядит как Скомпилировал пример MiniGUI\SAMPLES\Advanced\FreeImage\, закинул эту же картинку - та же фигня. FreeImage.dll скачана сhttp://freeimage.sourceforge.net/download.html. В чем косяк? Оригинал картинкиhttp://pics.qip.ru/002Sxl-3045AV5/

Ответов - 8

vvv: Клетчатое поле означает прозрачный фон. В некоторых просмотрщиках (скрин 1) он маскируется, в некоторых (скрин 2) обозначается бело-серым клетчатым полем.

kadijoller: Это я знаю, что прозрачный фон. Почему в примерах появляются артефакты? На других изображениях есть похожие косяки - где-то больше, где-то меньше. Меня интересует почему - это косяк библиотеки или реализации на харборе? Может окно как-то неправильно перерисовывается?

vvv: Насчет того, чей косяк (библиотеки или харбора) не скажу, с изображениями не часто приходится работать. Кстати, не ислючается и третий вариант - косяк в самом изображении (например, в Paintе эта картинка тоже выводится криво).


kadijoller: Если бы только на одном файле, я бы еще подумал над третьим вариантом. Поскольку косяк именно на png файлах, то подобрал 20 файлов в этом формате - на всех схожие проблемы, только цвета заменяются необязательно на черный, а на разные оттенки серого - от светло-серого до черного. Может есть какой-то обходной путь? Я просто не понимаю куда дальше двигаться - менять dll на другую(какую?), отказаться от минигуя, использовть хHarbour?

vvv: Мне кажется, если стандартный Paint выводит неправильно, то дело не харборе. Скорее всего имеют место какие-нибудь особенности формата.

vvv: Если картинок немного, можно попробовать перерисовать их каким-нибудь редактором. Я как-то пробовал иконки в программу вставлять - похожая ерунда была. Вроде формат один, а половина иконок нормально выводится, половина криво. Перерисовка в редакторе иногда помогала.

Dimka: в чем заключается косяк? все выглядит "правильно", так и должно быть.

Chikanuk: Наверное, хотелось получить такое изображение? Оригинал здесь:http://pics.qip.ru/002VWx-2045FpU/ FreeImage правильно его выводит. Надо только хорошенько попросить... Примеры же не показывают пользуются всеми возможностями библиотек (да и кто всеми пользуется?) Дело в том, что оригинальная картинка (см. 1-й пост) сделана с использованием альфа-канала, то есть BGRA. И вот этот самый канал не задействован при отрисовке файла на форме. Бороться с эти можно разными способами, в зависимости от задач. Причем средствами FreeImage. Можно, например, преобразовать (а не отключить альфа-канал! он и так не используется...) в BGR (то есть в 24-х битную модель - используй FI_CONVERTTO24BITS () ). Можно при загрузке именно .png попробовать вторым параметром использовать не PNG_DEFAULT, а PNG_IGNOREGAMMA, можно дополнительно в JPG/BMP/... конвертнуть файл и уже его на форму выводить, можно масками играться и т.д. Все это замечательно в официальном хелпе к FreeImage описано. Можно в сети на русском поискать. Еще можно с WIN API поиграться в плане того, как там рисовать - но не подскажу: давно было и за ненадобностью успешно подзабыл. Но в реальных программах лучше такие шикарные картинки не использовать: все-таки базы данных - не графический редактор



полная версия страницы