Как я могу изменить dpi изображения с расширением imagick

Мне нужно изменить все загруженные файлы до 72 точек на дюйм. Я использую расширение php imagick.

Вот то, что я пробовал (изображение, которое я использую, является 300 точек на дюйм):

$image = new Imagick();
$image->setResolution(72,72) ;
$image->readImage($img);
$image->resampleImage  (72,72,imagick::FILTER_UNDEFINED,1);
$image->writeImage($target)

это ничего не кажется. изображение загружается, но остается на 300 точек на дюйм

3 ответа

Ответ MatTheCat на месте. Вы также можете попробовать setImageUnits() чтобы убедиться, что он работает с дюймами, а не сантиметрами.

$image->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
$image->setImageResolution(72,72);

Пересэмплирование не нужно просто для изменения dpi.

Обратите внимание, что изменение dpi само по себе не влияет на размер файла и применяется только к повторной выборке и печати.

Кажется, вы должны использовать setImageResolution, а не setResolution: http://www.php.net/manual/fr/function.imagick-setresolution.php

используйте эту его работу с расширением imagick:

      $finalImageOnline = $canvas->getCore(); //get Imagick object
    $finalImageOnline->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
    $finalImageOnline->setImageResolution(72,72);
    $finalImageOnline->resampleImage  (72,72,imagick::FILTER_SINC,1);
    $finalImageOnline->setImageFormat("jpg");
    file_put_contents ($this->path . '/' . 'online' . '/' .$namaFile.'.jpg', $finalImageOnline);
Другие вопросы по тегам