6
votes

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!

2

2 Answers

9
votes

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

8
votes

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