【问题标题】:When using a PIL image object with reportlab drawImage gives当使用带有 reportlab drawImage 的 PIL 图像对象时,
【发布时间】:2017-12-12 22:12:22
【问题描述】:

我正在尝试使用 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


    【解决方案1】:

    这对我有用:

    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)
    

    【讨论】:

      【解决方案2】:

      仅用于更新,因为 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)
      

      【讨论】:

        【解决方案3】:

        我有这个问题大约 3 个月。在将 python 升级到 3.8、reportlab 升级到 3.5.42、Pillow 升级到 7.0.0 后,它再次开始在 amazon ec2 实例上工作。以前它会导致 Django gunicorn 服务器崩溃,导致 502 错误。

        【讨论】:

          猜你喜欢
          • 2012-12-06
          • 2012-05-01
          • 1970-01-01
          • 2020-11-29
          • 1970-01-01
          • 1970-01-01
          • 2018-12-30
          • 2021-03-09
          • 1970-01-01
          相关资源
          最近更新 更多