Establecer el parámetro de densidad para imágenes con php

Quiero convertir una página pdf a una imagen png con Imagick.

Lo intenté con PHP, pero la calidad de la imagen era muy baja.
Cuando intenté con la línea de comando, el resultado fue perfecto.

Código 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(); 

Código de línea de comando

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

Código PHP (2do bash)

 $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(); 

Todavía malos resultados.

¿Que puedo hacer? Quiero usar el parámetro de densidad en mi código PHP, pero ¿cómo?

Salida con PHP introduzca la descripción de la imagen aquí

Salida con linea de comando introduzca la descripción de la imagen aquí

Debe establecer la resolución antes de leer el archivo.

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

Que, el resultado será perfecto.

Espero que esto ayude a alguien.

Del manual http://php.net/manual/en/imagick.setresolution.php

Se debe llamar a Imagick :: setResolution () antes de cargar o crear una imagen.

Ver esta respuesta Pdf a la imagen usando php-imagick api