Соотношение сторон изображения с использованием Reportlab в Python

Я хочу вставить изображение во фрейм. Я нашел два способа сделать это:

  1. drawImage (self, image, x, y, width = None, height = None , mask = None, preserveAspectRatio = False, anchor = 'c')
  2. Image (filename, width = None, height = None)

Мой вопрос: как добавить изображение в кадр, сохранив его аспект ratio?

from reportlab.lib.units import cm
from reportlab.pdfgen.canvas import Canvas
from reportlab.platypus import Frame, Image

c = Canvas('mydoc.pdf')
frame = Frame(1*cm, 1*cm, 19*cm, 10*cm, showBoundary=1)

"""
If I have a rectangular image, I will get a square image (aspect ration 
will change to 8x8 cm). The advantage here is that I use coordinates relative
to the frame.
"""
story = []
story.append(Image('myimage.png', width=8*cm, height=8*cm))
frame.addFromList(story, c)

"""
Aspect ration is preserved, but I can't use the frame's coordinates anymore.
"""
c.drawImage('myimage.png', 1*cm, 1*cm, width=8*cm, preserveAspectRatio=True)

c.save()
11
задан citn 17 March 2011 в 08:03
поделиться