Изменение dpi с помощью библиотеки imagick в php


Мы добавляем некоторый текст с помощью функции annotateimage, используя библиотеку imagick в php. Исходный файл имеет разрешение 300 точек на дюйм, но после редактирования выходной файл становится 96 точек на дюйм.

Как мы можем это исправить?

EDIT******************************

Когда мы пытаемся сделать это на нашем локальном сервере разработки, выходной файл также отображается с разрешением 300 точек на дюйм. Эта проблема возникает только тогда, когда мы тестируем это на нашем веб-сервере. Обе версии linux и Imagick также одинаковы.

2 2

2 ответа:

Для этого можно использовать setResolution, как эквивалент переключателя командной строки-density.

Http://php.net/manual/en/function.imagick-setresolution.php

Правка:

Вы должны установить это перед чтением изображения, чтобы это сработало.

$im = new Imagick(); 
$im->setResolution(300,300); 
$im->readImage("image.jpg");

Сначала попробуйте это с Imagick

$image = new Imagick();
$image->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
$image->setImageResolution(300,300);

Если выше не работает, попробуйте это.

Вы можете читать файл и конвертировать DPI изображения от 96 до 300. Попробовать это.

  $imageGet = file_get_contents($imagePath);
  if($imageGet){
     $imageConverted = substr_replace($imageGet, pack("cnn", 1, 300, 300), 13, 5);
     $savefile = file_put_contents($newimagePath, $imageConverted);
  }