![]() |
|
#1
|
||||
|
||||
![]() Появилась такая задача - обработать много, действительно много, png-файлов. Думал, с Delphi всё будет проще, на деле оказалось иначе.
Использую компонент TPNGObject (кстати, когда я его устанавливал, у меня установился почему-то лишь PNGButton, но сейчас не об этом). Для начала решил, что надо научиться всех их уменьшать. Нашел пару функций, для перевода в bitmap и обратно. Bitmap уже уменьшаю. И сразу проблемы: 1. Потеря качества. Было: ![]() Стало: ![]() Не смертельно, но неприятно. 2. Альфа-канал не работал, как следует. Оно и понятно - при переводе в bitmap я пытаюсь получить к нему доступ, а его нет. Легко исправляется проверкой, есть ли прозрачность. (Есть и еще один способ, но в нем я не уверен). 3. Второй пункт я бы не писал, если бы не третий. Основной. Всю жизнь мне испортил. Короче, есть пара файлов. У них есть прозрачность. Но программа на них плющится и крешится, в bmp они не конвертятся - лишь по пикселям, а в таком случае неясно, откуда брать альфаканал. Они как непрозрачные, но прозрачность-то есть! Даже не меняя их, а лишь сохраняя после загрузки, я получаю нечто ужасающее: ![]() ![]() (Слева - то, что было). Я научился их отфильтровывать - параметр Header.ColorType у них равен трем. У обычных прозрачных - шести, у непрозрачных - трем. А хотелось бы обрабатывать, как и всё остальное. Я ламер, да? Может, есть еще какой-нибудь компонент, который работает с png более универсально? И да, почему тут пусто? А то, может, у меня устаревшая версия. Жизнь - это игра... Сюжет не очень, зато графика - отпад. Последний раз редактировалось IllVDG, 24.02.2011 в 17:18. |