Появилась такая задача - обработать много, действительно много, png-файлов. Думал, с Delphi всё будет проще, на деле оказалось иначе.
Использую компонент TPNGObject (кстати, когда я его устанавливал, у меня установился почему-то лишь PNGButton, но сейчас не об этом).
Для начала решил, что надо научиться всех их уменьшать. Нашел пару функций, для перевода в bitmap и обратно. Bitmap уже уменьшаю.
И сразу проблемы:
1. Потеря качества.
Было:

Стало:

Не смертельно, но неприятно.
2. Альфа-канал не работал, как следует. Оно и понятно - при переводе в bitmap я пытаюсь получить к нему доступ, а его нет. Легко исправляется проверкой, есть ли прозрачность. (Есть и еще один способ, но в нем я не уверен).
3. Второй пункт я бы не писал, если бы не третий. Основной. Всю жизнь мне испортил. Короче, есть пара файлов. У них есть прозрачность. Но программа на них плющится и крешится, в bmp они не конвертятся - лишь по пикселям, а в таком случае неясно, откуда брать альфаканал. Они как непрозрачные, но прозрачность-то есть! Даже не меняя их, а лишь сохраняя после загрузки, я получаю нечто ужасающее:


(Слева - то, что было).
Я научился их отфильтровывать - параметр Header.ColorType у них равен трем. У обычных прозрачных - шести, у непрозрачных - трем. А хотелось бы обрабатывать, как и всё остальное.
Я ламер, да? Может, есть еще какой-нибудь компонент, который работает с png более универсально?
И да, почему
тут пусто? А то, может, у меня устаревшая версия.