2

我编写了一个简单的 PIL 实现来将 EPS 文件列表转换为 PNG。

import Image
for infile in sys.argv[1:]:
    f, e = os.path.splitext(infile)
    outfile = f+".png"
    try:
        im = Image.open(infile)
        im.save(outfile, dpi = (1000, 1000))
    except IOError:
        print "Error"

虽然 dpi 标志改变了 PNG 的文件分辨率,但它并没有增加 im 对象的分辨率。这意味着我的输出 PNG 图像质量非常低。有没有办法提高 im 对象的分辨率?此代码不起作用。

im = Image.open(infile, dpi = (1000, 1000))

想法?

4

2 回答 2

3

查看 /usr/lib64/python2.7/site-packages/PIL/EpsImagePlugin.py 这是通过调用 ghostscript 实现的:

# Build ghostscript command
command = ["gs",
           "-q",                    # quite mode
           "-g%dx%d" % size,        # set output geometry (pixels)
           "-dNOPAUSE -dSAFER",     # don't pause between pages, safe mode
           "-sDEVICE=ppmraw",       # ppm driver
           "-sOutputFile=%s" % file,# output file
           "- >/dev/null 2>/dev/null"]

size 选项仅更改图形大小,但不会重新缩放它。也许在这里向 PIL 开发人员报告错误会很有用。

作为解决方法,如果您安装了 ImageMagick 命令行工具,您可以使用它作为解决方法:

import os
cmd = 'convert test.ps test.png'
os.system(cmd)

这在我的系统上运行良好,不会降低质量。

此版本对您获得的分辨率提供了更多控制:

import os
cmd = "convert -density 300 test.ps test.png"
os.system(cmd)
于 2012-11-21T16:15:59.073 回答
1

另一种解决方法是使 ps/eps 中的几何图形或文本非常大。对于我的应用程序,我在 EPS 中渲染乳胶并转换为 PNG。我只是将字体大小设置为更大的数字(200 pt),PNG 质量非常完美。如果您正在生成 EPS 内容,这将适用于您。

于 2014-09-29T18:06:50.503 回答