使用imagick调整图像大小

时间:2015-08-11 02:51:20

标签: php image-resizing imagick

我正在尝试将包含多个页面的PDF文件转换为不同的JPG。我正在使用上面的代码:

$pdf_in = 'file.pdf';

$img_array = array();
$im = new imagick();
$im->setResolution(144,144);
$im->readImage($pdf_in);
$im->setImageCompressionQuality(85);
$num_pages = $im->getnumberimages();
$i = 0;

for($x = 1;$x <= $num_pages; $x++) {
    $im->setiteratorindex($i);
    $im->thumbnailImage(990,0);
    $im->setimageformat('jpeg');
    $im->writeImage("page".$x.".jpg");
    $i++;
}

$im->clear();
$im->destroy();

转换顺利,所有JPG都按预期创建。但是,仅当我使用thumbnailImage()函数时才会创建core.xxxx文件。

编辑:所有生成的JPG必须具有990px​​的宽度。所以我使用thumbnailImage()函数来做到这一点。但是当我使用这个函数时,每次运行脚本时都会生成一个大小为200mb或更多的core.xxxx文件,在几天内填满磁盘上的所有空间。如果我注释掉行$ im-&gt; thumbnailImage(990,0),核心文件未生成,但JPG的宽度不正确。问题是:为什么要生成这个文件,有没有办法避免这种情况?我可以用另一种方式调整图像大小吗?

我正在使用带有cpanel的imagick ver 6.7.2-7 2015-07-23

有人可以解释出现了什么问题吗?

PS:我不想使用exec函数,因为它需要大量的CPU和RAM使用。

2 个答案:

答案 0 :(得分:0)

保留临时文件可能是您安装的ImageMagick版本中的错误,也可能是执行过程中应用程序崩溃的结果。

我认为您需要手动或通过常规任务来清理这些文件。例如http://www.imagemagick.org/discourse-server/viewtopic.php?t=15960

答案 1 :(得分:0)

我刚刚找到了解决方案。而不是使用

$im->thumbnailImage(990,0);

我用过

$im->scaleImage(990,0);

它有效。不再创建核心文件。我之前也尝试过函数resizeImage(),但这是同样的问题。感谢Danack的关注。问题解决了。