Доброго времени суток. Вкратце опишу свою проблему:
Недавно написал небольшой скриптик, который при помощи php и модуля imagick обрабатывает определённое изображение.
Задачи у него такие:
1) Узнать разрешение фотографии используя getImageWidth() и getImageHeight() и сохранить их в переменных(Это пригождается для того чтобы узнать вертикальный кадр или горизонтальный).
2) Переразбить оригинал фотографии до определённого разрешения, допустим(800x533)
3) Сжать переразбитое изображение используя setCompressionQuality()
4) Сохранить сжатое изображение в определённый каталог.
Протестил его на Windows платформе и всё работало как надо.
После этого теста настроил Imagick на FreeBSD и попробовал тот же самый скрипт на данной платформе. Результаты обработки оказались совсем другие.
Покапался и выяснил что пункты 1,2 и 4 работают нормально а вот setCompressionQuality() не давало никаких результатов. Даже после того как я его исключал из кода фотография получалась такого же качества.
Может быть кто сталкивался с такой проблемой?
В кратце скрипт выглядит так: $photo_server_path="./IMG_9019.JPG";
/* Создаём объёкт Imagick */
$image = new Imagick($photo_server_path);
/* Получаем парамеры ширины и высоты */
$height=$image->getImageHeight();
$width=$image->getImageWidth();
/* Если кадр горизонтальный, то делаем ресайз разрешения 800x533 и наоборот */
if ( $width > $height)
{
$image->thumbnailImage(800, 533
}
else {
$image->thumbnailImage(533, 800
}
/* Сжимаем фотографию */
$image->setCompressionQuality(75);
/* Добавляем немного контрастности */
$image->contrastImage(1);
/* Сохраняем в файл */
$image->writeImage('./FILTER_BOX.JPG');