Intereting Posts
FullCalendar – источник JSON не работает, но напрямую использует данные JSON. Как загрузить файл в базе данных с 1 или несколькими отношениями preg_replace_callback требует, чтобы аргумент 2 был действительным обратным вызовом … Stuck! Php, подтверждающий формат 24-часового времени Как передать динамически созданный список контроллеру для сохранения в базе данных? Php и Mysqli, как эхо-перерыв линии Использование Zend_Auth для защиты всех контроллеров Доступ к переменной в классе Как правильно использовать array_udiff ()? Динамически добавлять поля ввода, но поля генерируются внешними php-функциями ZIP-файл и защитить паролем в PHP Создание экземпляра класса PHP. Использовать или не использовать круглые скобки? fgetcsv не корректно считывает файл csv, который сохраняется в системе linux При извлечении имени исполнителя из файла XML отображается только 1 запись Получить количество строк, совпадающих с запросом UPDATE с PHP mysqli

установить параметр плотности для imagick с php

Я хочу преобразовать PDF-страницу в png-изображение с помощью Imagick.

Я пробовал с PHP, но качество изображения было очень низким.
Когда я попытался с командной строкой, результат был идеальным.

PHP-код

$im = new imagick( __DIR__ . DIRECTORY_SEPARATOR.$PDFName.'['.$i.']' ); $params = $im->identifyImage(); $width = $params['geometry']['width']*1; $height = $params['geometry']['height']*1; $im->setResolution(400,400); $im->resizeImage($width ,$height, imagick::FILTER_SINC, 1, true); $im->writeImage(__DIR__ . DIRECTORY_SEPARATOR.'pdf_pages\\'.$i.'.png'); $im->clear(); $im->destroy(); 

Код командной строки

 convert -density 400 a.pdf -resize 25% -a.png 

PHP-код (вторая попытка)

 $im = new imagick( __DIR__ . DIRECTORY_SEPARATOR.$PDFName.'['.$i.']' ); $im->setOption('density','400x400'); $im->setOption('resize','25%'); $im->writeImage(__DIR__ . DIRECTORY_SEPARATOR.'pdf_pages\\'.$i.'.png'); $im->clear(); $im->destroy(); 

Все еще плохие результаты.

Что я могу сделать? Я хочу использовать параметр плотности в моем PHP-коде, но как?

Выход с PHP введите описание изображения здесь

Выход с командной строкой введите описание изображения здесь

Перед чтением файла вам необходимо установить разрешение.

 $im = new imagick(); $im->setResolution(200,200); $im->readImage(__DIR__ . DIRECTORY_SEPARATOR.$PDFName.'['.$i.']'); 

Тогда результат будет совершенным.

Надеюсь, это поможет кому-то.

Из руководства http://php.net/manual/en/imagick.setresolution.php

Imagick :: setResolution () необходимо вызвать перед загрузкой или созданием изображения.

См. Этот ответ Pdf для изображения с использованием php-imagick api