Пропорциональное изменение размера изображения без снижения качества в TImage

У меня есть TImage 800x600 с изображением 1024x768. TImage выравнивается по alClient. Время пропорционально. TImage растянут.

Когда я изменяю размер формы, изображение тоже изменяется, но его качество становится ниже, а видимые текстовые метки на изображении сжимаются, становятся нечитаемыми или даже после загрузки большого изображения в маленькое TImage, у меня такая же проблема.

Как я могу это решить? Как изменить размер изображения в TImage с качеством, когда текст все еще читается в любом нормальном размере? (например, 1024x768 изменен на 500x400, а текст в нем все еще читается).


person AlexLL    schedule 06.07.2014    source источник


Ответы (2)


Изменение размера TImage не идеально. Я предпочитаю хранить исходное изображение в памяти и при необходимости использовать, скажем, бикубическое изменение размера (или билинейное для сжатия). Как только вы изменили размер изображения, просто нарисуйте его на TImage в форме.

Всегда храните исходное изображение в памяти и удаляйте из памяти измененное изображение после того, как нарисуете его.

person adlabac    schedule 07.07.2014
comment
Спасибо! Хорошая идея сделаю. - person AlexLL; 15.07.2014

Вы не можете надеяться изменить размер растровой графики и сохранить высокое качество текста. Текст отображается в определенном разрешении. Любая передискретизация разрушит качество текста. Единственный способ сохранить высокое качество текста с помощью операции изменения размера — повторно отобразить текст с новым разрешением. Один из способов добиться этого — использовать формат векторной графики, а не растровый. Другой способ — иметь возможность воссоздавать текст на лету.

person David Heffernan    schedule 06.07.2014
comment
@AlexLL В дополнение к тому, что опубликовал Дэвид, существуют также разные алгоритмы передискретизации. Одни «лучше», чем другие — это разные задачи. Вы можете попробовать один из них, но я все еще согласен с сообщением Дэвида. Лучше всего удалить текст из изменения размера целиком или переключиться на векторную графику. - person Graymatter; 06.07.2014
comment
Я не умею использовать векторную графику, у меня есть только скрины PNG. Как (например, Fastone Image viever) работает? Это создает красивое маленькое изображение с читаемым текстом. - person AlexLL; 06.07.2014
comment
Вы не можете реалистично масштабировать текст. По крайней мере, не мелкий текст, отрендеренный со сглаживанием. Вы просите о чем-то невозможном. - person David Heffernan; 06.07.2014