Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert PDF to high quality JPG using PHP and ImageMagick

I'm tearing my hair out.

I have a 300 DPI PDF that I want to turn into a 300 DPI JPG that's 2550x3300. I am told ImageMagick can do this, so I get ImageMagick to work, but it only returns a JPG that is sized about 1/5 the original PDF size.

It's not the source image--I've done it with several high quality PDFs and they all have the same problem.

After scouring StackOverflow for ideas, this is what I came up with to use:

$im = new imagick($srcimg);
$im->setImageResolution(2550,3300);
$im->setImageFormat('jpeg');
$im->setImageCompression(imagick::COMPRESSION_JPEG); 
$im->setImageCompressionQuality(100);
$im->writeImage($targetimg);
$im->clear();
$im->destroy();

But it still doesn't work.

I also have tried using $img->resizeImage() to resize the JPG, but then it comes out at really bad quality, if the right size.

Totally stumped. Appreciate your help!

like image 725
Brian Mayer Avatar asked Mar 06 '13 02:03

Brian Mayer


2 Answers

You need to set the resolution before reading the image in. Please see this comment on the manual - see if that will work.

like image 152
dakdad Avatar answered Nov 16 '22 23:11

dakdad


This would be the correct way, the quality will improve.

$im = new imagick();
$im->setResolution(300, 300);
$im->readImage($srcimg);
$im->setImageFormat('jpeg');
$im->setImageCompression(imagick::COMPRESSION_JPEG); 
$im->setImageCompressionQuality(100);
$im->writeImage($targetimg);
$im->clear();
$im->destroy();
like image 21
user2957058 Avatar answered Nov 17 '22 00:11

user2957058