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

问题描述 投票:2回答:2

我试图使用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'
python python-imaging-library reportlab
2个回答
3
投票

这对我有用:

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)

0
投票

只是为了更新,因为StringIO已在Python3中弃用。导入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)
© www.soinside.com 2019 - 2024. All rights reserved.