минусплюс 0
25.09.2011 03:56 Обновлено: 18.05.2022 14:32
Как я уменьшил картинку в delphi

Я решил записать себе на будущее мои мучения по нормальному уменьшению картинки программно.

В гугле нашлось множество разных способов. Перепробовал кучу, убил немеряно времени. Стандартный способ заключается в использовании StretchDraw.

Это что-то типа такого:

Качество на выходе, в основном, отвратное. Годится, чтобы создавать на лету картинки, просто посмотреть что имеется, но использовать их просто некрасиво.

С GDI+ подружиться нормально не удалось. В паре программ работало у меня что-то типа такого:

Но тут что-то погряз я в коде, заглючило, разозлился и решил раз и навсегда найти решение, которое буду использовать везде. Поиски привели меня к мега-библиотеке Graphics32. Так же под руку попался юнит janFX — прекрасный простой в использовании модуль.

Про janFX я тут записывать не буду, а вот по Graphics32 нужно сделать памятку. Дело в том, что приложенные к библиотеке примеры сделаны так, что просто мозги вывихнешь, пытаясь разобраться. И по интернету я не нашёл ни одного человеческого примера. После нескольких проб получается следующее: нужно сделать два битмапа обязательно(как в первом примере не получится одним битмапом сам в себя), нужно создать ресамплер, перерисовать из одного битмапа в другой, указав уменьшение. Если что-то забыть или сделать не так, то на выходе будет всем известная картина Малевича.

ЗЫ

Небольшое дополнение в статью. Сейчас я перешёл на ImageEn. Пока экспериментирую… Потом опишу результаты