Преобразование Imagick JPEG в PNG

0

Мне нужно преобразовать изображение JPEG Imagick в PNG, сохраняя при этом imageCompressionQuality изображения JPEG. Я попытался использовать составное изображение, а также клонировать $ image, чтобы достичь этого, но оба берут оригинальное качество (перед сжатием изображения в файле JPEG).

$image = new Imagick($image_name);
$image->resizeImage($imageWidth, $imageHeight, Imagick::FILTER_LANCZOS, 1);
$image->setImageFormat("jpeg");
$image->setImageCompression(imagick::COMPRESSION_JPEG);
$image->setImageCompressionQuality(00);
$image->stripImage();

СПОСОБ 1:

$finalImage = new Imagick();
$finalImage->newImage($imageWidth, $imageHeight, "none");
$finalImage->compositeimage($image, Imagick::COMPOSITE_OVER, 0, 0);
$finalImage->setImageFormat("png");
echo $finalImage;

СПОСОБ 2:

$finalImage = clone $image;
etc.

Есть какой-либо способ сделать это?

Теги:
jpeg
png
imagick

2 ответа

2
Лучший ответ
  1. Настройки "Качество" не являются частью JPEG. Это просто сокращение, которое некоторые кодеры используют для выбора таблиц квантования.

  2. В PNG нет эквивалента выбора таблицы квантования. PNG - сжатие без потерь. Что происходит, это то, что выходит для всех настроек.

0

Выяснил способ сделать эту работу - я использовал writeImage для записи временного файла на сервер, а затем создал новый объект Imagick из временного объекта. Это сохраняло сжатие файла jpg.

$image->writeImage($image_name . "temp.jpg");

$finalImage = new Imagick($image_name . "temp.jpg");
$finalImage->setImageFormat("png");
echo $finalImage;

unlink($image_name . "temp.jpg");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню