当使用带有reportlab的PIL图像对象时,drawImage给出了

时间:2017-12-12 22:12:23

标签: python python-imaging-library reportlab

我正在尝试使用reportlab drawImage方法将PIL图像对象插入到pdf中。

 im=Image.open('back_ground.png')
 side_im=im.crop((2,2,277,819))
 c=canvas.Canvas('report.pdf')
 c.drawImage(side_im,200,700)

我收到此错误

AttributeError: 'Image' object has no attribute 'rfind'

3 个答案:

答案 0 :(得分:2)

这对我有用:

import StringIO
from reportlab.lib.utils import ImageReader

im=Image.open('back_ground.png')
side_im=im.crop((2,2,277,819))
c=canvas.Canvas('report.pdf')

#c.drawImage(side_im,200,700)
side_im_data = StringIO.StringIO()
side_im.save(side_im_data, format='png')
side_im_data.seek(0)
side_out = ImageReader(side_im_data)
c.drawImage(side_out,200,700)

答案 1 :(得分:0)

仅作为更新,因为Python3中不推荐使用StringIO。导入io而不是StringIO并使用io.BytesIO()

import io
from reportlab.lib.utils import ImageReader

im=Image.open('back_ground.png')
side_im=im.crop((2,2,277,819))
c=canvas.Canvas('report.pdf')

#c.drawImage(side_im,200,700)
side_im_data = io.BytesIO()
side_im.save(side_im_data, format='png')
side_im_data.seek(0)
side_out = ImageReader(side_im_data)
c.drawImage(side_out,200,700)

答案 2 :(得分:0)

这个问题我持续了大约3个月。将python升级到3.8,将reportlab升级到3.5.42,将Pillow升级到7.0.0之后,它又开始在Amazon EC2实例上工作。以前它使Django gunicorn服务器崩溃,导致502错误。