Intereting Posts
Запуск двух версий PHP на одном сервере Как получить ASIN и цену от AMAZON Как я могу убедиться, что я поймал все ошибки из MySQLi :: multi_query? Удалить имя контроллера из URL-адресов в Yii2 добавить в массив, если он еще не существует как определить номера телефонов в тексте (и заменить их)? Нужна помощь в разделении строки в переменной и присвоении ее частей массиву Как обнаружить веб-страницу php в моем приложении iPhone, кроме Safari Yii ajaxSubmitButton () с проверкой полей Решение для краткого описания в watchout woocommerce wordpress не работает для меня Что такое эквивалент PHP статической переменной на других языках? Почему загрузка изображения завершается ошибкой is_uploaded_file php? Значение в базе данных «участники» показывает ссылку, когда пользователь является администратором Как вы определяете PHP как строку? Как я могу подсчитать общее количество встроенных функций в PHP?

Получить / установить DPI с помощью PHP GD / Imagick?

Я создаю веб-приложение, которое будет обрабатывать файлы изображений, которые в конечном итоге будут напечатаны в большом формате.

Как часть этого, мне нужно получить (т.е. прочитать) и установить (то есть изменить) DPI файла изображения.

Возможно ли это через PHP GD или PHP Imagick?

Благодаря,

BK


Редактировать:

Доступ к DPI изображения можно получить с помощью метода getImageResolution iMagick:

 public function getDPI() { $imgDPI = $this->image->getImageResolution(); return $imgDPI; } 

и DPI изображения можно установить с помощью метода setImageResolution :

 public function setDPI($DPIX, $DPIY) { $this->image->setImageResolution($DPIX,$DPIY); } 

В примитивном формате растрового изображения, подобном тем, что GD выдает, параметр dpi – это просто метаинформация, которую приложение обработки может использовать для преобразования размера пикселя в физическую единицу.

Насколько я знаю, невозможно управлять метаданными непосредственно в GD. Для этого вам придется использовать внешнюю библиотеку.

Тем не менее, я не думаю, что это действительно необходимо. Просто сгенерируйте изображение в любых требуемых размерах пикселей (количество пикселей – это действительно релевантная информация!) И сообщите процессу печати, какие параметры dpi будут использоваться.

для использования «getImageResolution ()»; вы должны быть уверены, что разрешение в «PixelsPerInch» … иногда это может быть «PixelsPerCentimeter»

используйте следующий код для получения информации об изображении:

 $imagick = new Imagick($filename); $data = $imagick->identifyimage(); var_dump($data); 

результат (когда PixelsPerInch):

 array(11) { ["imageName"]=> string(11) "/jpg300.jpg" ["format"]=> string(51) "JPEG (Joint Photographic Experts Group JFIF format)" ["units"]=> string(13) "PixelsPerInch" ["type"]=> string(9) "TrueColor" ["colorSpace"]=> string(3) "RGB" ["compression"] => string(4) "JPEG" ["fileSize"] => string(6) "8.72mb" ["mimetype"] => string(10) "image/jpeg" ["geometry"] => array(2) { ["width"] => int(11812) ["height"] => int(7876) } ["resolution"]=> array(2) { ["x"]=> float(300) ["y"]=> float(300) } ["signature"]=> string(64) "7fc387ea465ec716e9fd6e233bb1d3740cb509f5667ed2a4df0199e6e664590e" } 

или (когда PixelsPerCentimeter):

  array(11) { ["imageName"]=> string(8) "/psm.jpg" ["format"]=> string(51) "JPEG (Joint Photographic Experts Group JFIF format)" ["units"]=> string(19) "PixelsPerCentimeter" ["type"]=> string(9) "TrueColor" ["colorSpace"]=> string(3) "RGB" ["compression"]=> string(4) "JPEG" ["fileSize"]=> string(7) "25.01mb" ["mimetype"]=> string(10) "image/jpeg" ["geometry"]=> array(2) { ["width"]=> int(11812) ["height"]=> int(7876) } ["resolution"]=> array(2) { ["x"]=> float(118.11) ["y"]=> float(118.11) } ["signature"]=> string(64) "b491e059624e79a4dee62d9cc7646019927b2222bfed9ac8dd4342185e648eaf" } 

Это мое решение для работы на Joox.io

 /** * @param $filename * @return array */ function getImageDPI($filename) { $resolutions = null; if (class_exists('Imagick')) { $image = new Imagick($filename); $resolutions = $image->getImageResolution(); } else { $a = fopen($filename, 'r'); $string = fread($a, 20); fclose($a); $data = bin2hex(substr($string, 14, 4)); $x = substr($data, 0, 4); $y = substr($data, 4, 4); $resolutions = array('x' => hexdec($x), 'y' => hexdec($y)); } return $resolutions; }