Оказывается, что postscript - это векторизованный формат изображения, и перед растеризацией изображение необходимо масштабировать.Ваша векторная шкала может отличаться от моей (моя была 0,60): вы можете просмотреть масштабный коэффициент в инкапсулированном файле postscript, если масштабные коэффициенты DPI в этом коде не работают для вас
Открытый код EPS былвзято из этого поста: как сохранить размер холста при преобразовании холста Python Turtle в растровое изображение
Я использовал этот фрагмент кода, чтобы решить мою проблему:
ps = self.canvas_image.canvas.postscript(colormode='color', x = 0, y = 0, height = 256, width = 256)
""" canvas postscripts seem to be saved at 0.60 scale, so we need to increase the default dpi (72) by 60 percent """
im = open_eps(ps, dpi=119.5)
#im = Image.open('test.ps')
im.save(filepath, dpi=(119.5, 119.5))
def open_eps(ps, dpi=300.0):
img = Image.open(BytesIO(ps.encode('utf-8')))
original = [float(d) for d in img.size]
scale = dpi/72.0
if dpi is not 0:
img.load(scale = math.ceil(scale))
if scale != 1:
img.thumbnail([round(scale * d) for d in original], Image.ANTIALIAS)
return img