Я разработал сайт сообщества для обмена фотографиями, используя 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
Видите драматическую разницу? Я пытаюсь преодолеть этот огромный разрыв. Первое, что я сделал, это применил к изображениям фильтр резкости. Вы можете увидеть результат здесь:
Хотя это все еще не идеально, оно, по крайней мере, приближается к уровню резкости изображения Flickr. Остается проблема в том, что цвета размываются, как будто снижается их насыщенность. Это происходит уже до фильтра повышения резкости, поэтому должно быть в GD2.
Этот вопрос для меня жизненно важен, но я не знаю, где искать. Я нашел несколько потоков .NET, в которых говорится о подвыборке цветности, но я не знаю, что делать с этой информацией в моей настройке. Я ищу любое решение, которое работает в рамках ограничений моей установки.
Обновление: исходный файл в том виде, в котором я загрузил его на свой сайт и на Flickr:
http://www.jungledragon.com/img/DSC07275.jpg
Обновление 2: я в шоке. В хорошем смысле. Мне потребовалось много усилий, чтобы установить ImageMagick, но после переключения на него (что было связано с установкой «imagemagick» в качестве библиотеки для использования в классе манипулирования изображениями Code Igniter, результат тестового изображения выглядит следующим образом:
Изменение размера ImageMagick происходит именно так, как задумано. Цвета сохранены, резкость есть. Да, я отключил свою пользовательскую процедуру повышения резкости, так как она больше не нужна из-за ImageMagick. Кроме того, процесс намного быстрее и требует меньше памяти. И вот еще одна замечательная часть: я не могу этого объяснить, но я абсолютно ничего не сделал, чтобы указать ImageMagick использовать определенный цветовой профиль, который был предложен пользователем @Alix. Пока что в моем тестировании похоже, что информация о цвете учитывается со встроенным профилем или без него. Вывод просто является уменьшенной версией ввода. Действительно ли ImageMagick такой умный или я сплю?
IEC 61966-2.1 Default RGB colour space - sRGB
не совсем уверен, что нужно сделать, но это то, что вам нужно искать. - person Pekka   schedule 25.04.2011Adobe RGB (1998)
ICC. Хм. У тебя есть Фотошоп? Можете ли вы попробовать преобразовать изображение вsRGB
и снова загрузить его? Боюсь, я не думаю, что GD сможет справиться с профилем, он ничего о них не знает, поэтому вам придется скармливать ему правильные данные. ImageMagick знает концепцию профилей, по крайней мере, на базовом уровне, отсюда и мой вопрос. - person Pekka   schedule 25.04.2011