使用 imagick 调整图像大小

Resize image using 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 文件,几天后就会填满我磁盘上的所有 space 文件。如果我注释掉 $ im- > thumbnailImage (990,0) 行,则不会生成核心文件,但 JPG 的宽度将不正确。问题是:为什么要生成这个文件,有没有办法避免这种情况?我可以用其他方式调整图像大小吗?

我在 cpanel 中使用 imagick ver 6.7.2-7 2015-07-23

谁能解释一下出了什么问题?

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

留下临时文件要么是您安装的 ImageMagick 版本中的错误,要么是应用程序在执行过程中崩溃的结果。

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

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

$im->thumbnailImage(990,0);

我用过

$im->scaleImage(990,0);

它奏效了。不再创建核心文件。我之前也试过函数resizeImage(),但还是同样的问题。谢谢丹纳克的关注。问题解决了。