如何将枕头EPS调整为JPG品质

时间:2019-06-11 12:32:24

标签: python python-imaging-library

我正在尝试使用Pillow将EPS图像转换为JPEG。但是结果质量很差。我正在尝试使用resize方法,但是它被完全忽略了。我将JPEG图像的大小设置为(3600, 4700),但是结果图像的大小为(360, 470)。我的代码是:

eps_image = Image.open('img.eps')
height = eps_image.height * 10
width = eps_image.width * 10
new_size = (height, width)
print(new_size)  # prints (3600, 4700)
eps_image.resize(new_size, Image.ANTIALIAS)
eps_image.save(
    'img.jpeg',
    format='JPEG'
    dpi=(9000, 9000),
    quality=95)

UPD。 Vasu Deo.S注意到了我的一个错误,由于他,JPG图像变大了,但是质量仍然很低。我尝试了resize函数的不同DPI,大小,重采样值,但是结果并没有太大变化。我该如何做得更好?

enter image description here

2 个答案:

答案 0 :(得分:2)

问题在于PIL是光栅图像处理器,而不是 vector 图像处理器。打开矢量图像时,会将矢量图像(例如EPS文件和SVG文件)“栅格化”到网格中,因为它只能处理栅格。

如果该网格没有足够的分辨率,则永远无法重新获得它。通常,它以100dpi的速度进行光栅化,因此,如果要制作更大的图像,则需要在更大的网格上进行光栅化,然后才能开始使用。

比较:

from PIL import Image

eps_image = Image.open('image.eps')
eps_image.save('a.jpg')

结果为540x720:

enter image description here

这:

from PIL import Image

eps_image = Image.open('image.eps')
# Rasterise onto 4x higher resolution grid
eps_image.load(scale=4)   
eps_image.save('a.jpg') 

结果为2160x2880:

enter image description here

您现在可以根据自己的需要调整大小了。

请注意,您根本不需要编写任何Python即可完成操作- ImageMagick 将为您完成所有操作。它包含在大多数Linux发行版中,并且可用于macOS和Windows,您只需在终端中使用它即可。等效命令如下:

magick -density 400 input.eps -resize 800x600 -quality 95  output.jpg

答案 1 :(得分:1)

这是因为eps_image.resize(new_size, Image.ANTIALIAS)返回了调整大小的图像副本。因此,您必须将其存储在单独的变量中。只需更改:-

eps_image.resize(new_size, Image.ANTIALIAS)

eps_image = eps_image.resize(new_size, Image.ANTIALIAS)

更新:-

这些可能无法完全解决问题,但仍会有所帮助。

  • 您正在尝试将输出图像保存为.jpeg,即 有损压缩格式,因此在 压缩/转换(大部分情况下)。改变输出 文件扩展为无损压缩格式,例如.png,以便 压缩期间不会破坏数据。也改变 quality=95中的quality=100Image.save()
  • 您正在使用Image.ANTIALIAS重采样图像,即 放大图像时效果不佳(已被替换为 Image.LANCZOS在较新的版本中,该子句仍然存在 向后兼容)。尝试使用Image.BICUBIC,它会产生 放大图像时,效果(大部分情况下)非常好。