PHP Imagick EPS转换为PNG的问题

我在这里努力处理我的eps2png代码。我的意思是,它工作得很好,但仅适用于较小的EPS文件。

我的代码:

<?php
    $imagick = new \Imagick();
    $imagick->setColorspace(\Imagick::COLORSPACE_RGB);
    # +++ THOSE ARE THE BOTH RELEVANT LInes +++
    $resolution = 500;
    $imagick->setResolution($resolution,$resolution);
    $imagick->readImage("file.eps");
    $imagick->writeImage("image.png");
    $imagick->destroy();

好的,可以-至少要处理一个文件,但是我得到了两个文件(实际上是大量文件,但这里只有2个相关文件)。

第一个EPS的尺寸为365 x 227

第二个EPS的尺寸为5683 x 2848

在Notepad ++中查看两个文件会告诉我,有一个“ BoundingBox”和一个“ HiResBoundingBox”:

# IN the small EPS the two lines are:
%%BoundingBox: 0 0 365 227
%%HiResBoundingBox: 0 0 365 226.5000

# In the big EPS:
%%BoundingBox: 0 0 5683 2848
%%HiResBoundingBox: 0 0 5682.6304 2847.9844

imagick似乎没有设置或修改这些Boundingbox物件的方法。

我用我的代码进行了测试,因此在读取图像(之前我注释掉setResolution行)之后,$imagick->getImageResolution();对于两个文件都返回["x" => 72,"y" => 72],因此分辨率相同。

将小型EPS的分辨率(在$imagick->readImage("file.eps");之前)设置为500可以正常工作-参见上面的代码块。 但是使用大的EPS文件,整个过程就会崩溃。将分辨率降低到“ 50”,再一次成为一个了不起的PNG。但是,将分辨率设置为“ 50”后的小图像只会出现乱码和模糊。 总的来说,代码工作得非常好,除非我的文件小而大。我不能成为生活在这个星球上的第一个想要处理大小文件的人,对吗?

问题是,如何以某种方式“标准化” EPS尺寸?我很确定我的方法有一些花哨的技术术语,但我希望您能理解我的意思。这整个废话让我发疯。因为只有setResolution()方法才能确保PNG清晰美观。仅设置大小或缩放比例或(重新)采样以及Imagick提供的所有其他方法都远非故意的(因此,没有setResolution()的东西就没用了。)

dongjiahui 回答:PHP Imagick EPS转换为PNG的问题

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3048675.html

大家都在问