PHP imagick-将eps转换为jpg,但质量较差
我正在尝试将eps文件转换为jpg并调整其大小。我使用PHPImagick来实现这一点。 转换后质量很差 您可以在此处下载我的eps: 我使用以下代码:PHP imagick-将eps转换为jpg,但质量较差,php,jpeg,imagick,imagemagick-convert,eps,Php,Jpeg,Imagick,Imagemagick Convert,Eps,我正在尝试将eps文件转换为jpg并调整其大小。我使用PHPImagick来实现这一点。 转换后质量很差 您可以在此处下载我的eps: 我使用以下代码: if ( extension_loaded('imagick') ) { $imagePath = 'icon.eps'; $imagick = new Imagick(); $imagick->setResolution(300, 300); $imagick->setCol
if ( extension_loaded('imagick') ) {
$imagePath = 'icon.eps';
$imagick = new Imagick();
$imagick->setResolution(300, 300);
$imagick->setColorspace(Imagick::COLORSPACE_SRGB);
$imagick->readImage($imagePath);
$imagick->resizeImage(0, 1000, Imagick::FILTER_LANCZOS, 1);
$imagick->setImageResolution(72, 72);
$imagick->setImageCompressionQuality(70);
$imagick->setImageCompression(\Imagick::COMPRESSION_JPEG);
$imagick->setCompressionQuality(70);
$imagick->setImageFormat('jpeg');
$imagick->writeImage('test.jpg');
} else {
echo 'not found';
}
在不调整大小/仅转换的情况下,此设置的结果相同,但质量仍然很差:
if ( extension_loaded('imagick') ) {
$imagePath = 'icon.eps';
$imagick = new Imagick();
$imagick->setResolution(300, 300);
$imagick->setColorspace(Imagick::COLORSPACE_SRGB);
$imagick->readImage($imagePath);
$imagick->setImageFormat('jpeg');
$imagick->writeImage('test.jpg');
} else {
echo 'not found';
}
我在php 7.2.33中使用此版本:
有什么问题吗?您显然知道ImageMagick使用Ghostscript将EPS文件渲染为JPEG格式。我建议,与其使用ImageMagick,不如直接使用Ghostscript。这将使您比使用ImageMagick更能控制该过程,这意味着您可以发布Ghostscript命令行而不是IM命令行 恐怕我不知道ImageMagick发送给Ghostscript的是什么,这使得我很难提供任何建议 此外,你真的需要更明确地说明你的问题。你说的“质量很差”是什么意思。这纯粹是主观的还是客观的标准 您发布的图像与我看到的不太一样,但由于我不知道使用什么命令来驱动Ghostscript,可能只是因为我没有完全复制您的设置 第一个音符;EPS的性质并不真正适合JPEG压缩。JPEG在应用于平滑变化的图像时表现最佳,如照片(JPEG=联合摄影专家组),它不能很好地处理带有锐边的大面积平面颜色(这正是您在这里看到的),锐边的高频分量会产生“振铃”或“边缘”效果 直接使用Ghostscript时,可以更改JPEG质量。设置
-dJPEGQ=100
将产生最高质量的压缩(即输出文件将更大)
此外,EPS的边界框为20x20点。每个维度都是20/72英寸。即使是300 dpi,也会产生84x84像素的图像。相当小。在72 dpi时,您将获得20x20像素的图像
在我看来,您使用默认的JPEG Q值以72 dpi的速度渲染EPS,“质量差”似乎只是由JPEG压缩产生的众所周知的人工制品。将该设置与Ghostscript一起使用会产生与您发布的图像并不完全不同的效果(尽管没有锐利的棱角人工制品)。将JPEGQ设置为100会产生更合理的效果。默认设置生成的文件为3564字节,而较高质量的文件为4485字节
如果是我,我会以合适的分辨率渲染TIFF文件,比如说1200 dpi,得到333x333像素的图像。然后将其加载到ImageMagick中,并将其调整为所需尺寸。最后,如果出于某种原因需要以JPEG格式导出
下面是Ghostscript输出的比较。左边是在1200 DPI中生成的JPEG,中间是72 dPI的默认质量渲染,右边是72个DPI渲染,JPEGQ设置为100。