使用PHP和ImageMagick将PDF转换为高质量的JPG

时间:2013-03-06 02:40:13

标签: php pdf image-processing imagemagick imagick

我正在撕开我的头发。

我有一个300 DPI PDF,我想把它变成300 DPI JPG,即2550x3300。我被告知ImageMagick可以这样做,所以我让ImageMagick工作,但它只返回一个大小约为原始PDF大小1/5的JPG。

这不是源图像 - 我使用了几个高质量的PDF并且它们都有同样的问题。

在为StackOverflow寻找创意之后,这就是我想出来的用法:

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

但它仍然不起作用。

我也尝试过使用$ img-> resizeImage()来调整JPG的大小,但如果尺寸合适,那么它的质量非常差。

完全难倒。感谢您的帮助!

2 个答案:

答案 0 :(得分:8)

您需要在阅读图片之前设置分辨率。请see this comment on the manual - 看看是否有效。

答案 1 :(得分:7)

这将是正确的方式,质量将提高。

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