Я занимался редактированием изображений с помощью PHP, поскольку GD предоставляет меньше возможностей, я переключился на Imagick.
Одним из процессов является преобразование изображений в оттенки серого. Все шло нормально (локально в Windows 7, Imagick 2.2.1-dev 6.5.8-7 Q16), пока я не загрузил скрипт на свой сервер веб-хостинга (Linux, Imagick 3.0.1, 6.2.8, 20.10.2010, В16).
Я пытался изменить качество, но это ничего не улучшило.
$img->setImageCompression(imagick::COMPRESSION_JPEG); $img->setImageCompressionQuality(100);
Вот результаты GD, Imagick и Photoshop
Я считаю, что что-то не так с версией 3.0.1. Может ли кто-нибудь подтвердить это?
Q1: Есть ли альтернативный способ преобразовать изображение в оттенки серого с помощью Imagick
?
Q2: Можно ли преобразовать ресурс GD в Imagick? Поэтому я могу использовать imagefilter($img, IMG_FILTER_GRAYSCALE);
, чтобы получить правильный результат, а затем вывести его с помощью Imagick.
ps: для Q2 вы можете предложить мне просто использовать GD для обработки изображения. Но проблема в том, что imagejpeg()
не может сохранять изображения с сохраненным разрешением. и именно поэтому я переключился на Imagick.
$img->modulateImage(100, 0, 100);
, где параметры(brightness, saturation, hue)
. Я считаю, что это правильная функция, и она действительно отлично работает с версией 2.2.1. - person user1643156   schedule 25.11.2012modulateImage
является действительно функцией изменения яркости, насыщенности и оттенка. почему это не та функция, которую нужно использовать? версия 2.2.1 дает почти такой же результат, как и в Photoshop. и результат из 3.0.1 явно неверен. - person user1643156   schedule 25.11.2012modulateImage()
делает намного больше, чем вам нужно, что делает его более подверженным проблемам (как вы только что видели). Способ цветового пространства гораздо более надежен, поскольку вы говорите imagick специально переключаться на оттенки серого, а не просто применять случайный цветовой фильтр (я имею в виду, знает ли imagick, что ваш конечный результат должен быть в оттенках серого?). - person Christian   schedule 25.11.2012