3

我正在尝试使用 Imagick 调整 .eps 文件的大小并将其保存为 .jpeg,

我尝试过resizeImage, scaleImage, setImageResolution, 并且尝试过写入 .png,但结果总是很糟糕。我尝试将压缩质量设置为 100,并且尝试了各种 resizeImage 过滤器和模糊参数。

$imagick = new Imagick();
$imagick->readImage($file);

$imagick->resizeImage($width, $height, imagick::FILTER_CATROM, 1);

$imagick->setImageFormat('jpeg');

return $imagick->writeImage($name);

有什么我想念的魔法吗?

编辑:我在某处读到过与 Ghostscript 相关的类似问题,我安装了 Ghostscript 端口。我如何验证它是否正常工作?

4

2 回答 2

1

作为记录,解决方案是通过外壳执行图像魔法:

例如

$cmd = escapeshellcmd("convert -resize '{$width}x{$height}' -density 300 -flatten {$file} -colorspace rgb {$jpeg}");
exec($cmd, $out, $return_var);
于 2013-02-22T10:47:40.617 回答
1

您必须在读取文件之前设置渲染分辨率:

$imagick = new Imagick();
$imagick->setResolution(300, 300);
$imagick->readImage($file);

如果结果仍然很糟糕,则意味着 ImageMagick 正在使用来自 EPS 的嵌入 TIFF 预览,而不是实际的 PostScript 数据。确保已安装 Ghostscript 并且可以按照此答案中的说明找到。

于 2015-08-23T06:10:15.620 回答