Как запретить GD2 размывать цвета при изменении размера изображений?

Я разработал сайт сообщества для обмена фотографиями, используя CodeIgniter 1.7. Фотографии, загружаемые участниками, автоматически изменяют размер в нескольких форматах, для которых я использую класс CodeIgniter Image Manipulation. Этот класс встроен в структуру и, по сути, является оболочкой для нескольких библиотек для работы с изображениями, таких как GD, GD2, ImageMagick и NETPBM. На моем хосте я могу использовать только GD2, поэтому этот вопрос будет именно здесь.

Переходим к моей проблеме. Вот пример фотографии с измененным размером на моем сайте. Обратите внимание, что оригинал был очень большим, более 3000 пикселей в ширину:

http://www.jungledragon.com/image/195/female_impala_close-up.html

Теперь посмотрите на то же изображение, также с измененным размером, просто немного больше на Flickr:

http://www.flickr.com/photos/fledder/3763538865/in/set-72157621744113979

Видите разительную разницу? Я пытаюсь преодолеть этот огромный пробел. Первым делом я применил к изображениям фильтр повышения резкости. Вы можете увидеть результат здесь:

enter image description here

Хотя он все еще не идеален, он по крайней мере приближается к уровню резкости изображения Flickr. Остается проблема в том, что цвета размываются, как будто их насыщенность снижается. Это происходит перед фильтром повышения резкости, поэтому он должен быть в GD2.

Этот вопрос жизненно важен для меня, но я не не знаю где искать. Я нашел несколько потоков .NET, в которых говорится о подвыборке цветности, но я не знаю, что делать с этой информацией в моей настройке. Я ищу любое решение, которое работает в рамках моих настроек.

Обновление: Настоящим исходный файл, точно в том виде, в каком я его загрузил на свой сайт и Flickr:

http: // www. jungledragon.com/img/DSC07275.jpg[12209 sizesUpdate 2 : Я в шоке. В хорошем смысле. Мне потребовалось много усилий, чтобы установить ImageMagick, но после переключения на него (который заключался в настройке imagemagick в качестве библиотеки для использования в классе обработки изображений Code Igniter, результат тестового изображения был следующим:

enter image description here

Изменение размера ImageMagick делает это в точности так, как задумано. Цвета сохраняются, а резкость сохраняется. Да, Я отключил свою настраиваемую процедуру повышения резкости, поскольку она больше не нужна из-за ImageMagick. Вдобавок ко всему, этот процесс намного быстрее и требует меньше памяти. И вот еще одна важная часть: я не могу это объяснить, но я абсолютно ничего не сделал, чтобы указать ImageMagick использовать определенный цветовой профиль, который был предложен пользователем @Alix. В моем тестировании, похоже, что информация о цвете соблюдается со встроенным профилем или без него. Вывод - это просто уменьшенная версия ввода. ImageMagick действительно настолько умен, или я сплю?

34
задан Fer 26 April 2011 в 20:21
поделиться