reportlab - OSError: cannot indetify image file

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Nobuddy
User
Beiträge: 994
Registriert: Montag 30. Januar 2012, 16:38

Hallo zusammen,

habe seit heute das Problem, dass sich eine Grafik (png) in reportlab nicht laden lässt.
Es handelt sich um folgenden Codeteil:

Code: Alles auswählen

[Codebox=python file=Unbenannt.py]
        # Head
        grafik = '{}{}'.format(Path('reportlab_picture'), 'Firmenkopf.png')
        print('#########')
        print(grafik)
        print('#########')
        canvas.drawImage(grafik, doc.breite-(7.8*cm), doc.hoehe-(2.2*cm),
            width=6.8*cm, height=1.7*cm)[/Codebox]
Ich erhalte folgende Fehlermeldung:

Code: Alles auswählen

[Codebox=bash file=Unbenannt.bsh]1
#########
/media/daten/officeplanet/firmware/reportlab/picture/Firmenkopf.png
#########
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.4/tkinter/__init__.py", line 1536, in __call__
    return self.func(*args)
  File "Accounting.py", line 1174, in invoice_positions
    check = invoice_pdf({selection : pdf_invoice}).prepare()
  File "/media/daten/officeplanet/firmware/reportlab/build_report_invoice.py", line 196, in prepare
    {document : val})
  File "/media/daten/officeplanet/firmware/reportlab/build_report_invoice.py", line 226, in makePDF
    pdf.multiBuild(pdf.story)
  File "/usr/lib/python3/dist-packages/reportlab/platypus/doctemplate.py", line 970, in multiBuild
    self.build(tempStory, **buildKwds)
  File "/usr/lib/python3/dist-packages/reportlab/platypus/doctemplate.py", line 887, in build
    self.clean_hanging()
  File "/usr/lib/python3/dist-packages/reportlab/platypus/doctemplate.py", line 512, in clean_hanging
    self.handle_flowable(self._hanging)
  File "/usr/lib/python3/dist-packages/reportlab/platypus/doctemplate.py", line 767, in handle_flowable
    f.apply(self)
  File "/usr/lib/python3/dist-packages/reportlab/platypus/doctemplate.py", line 145, in apply
    annotateException("\nhandle_%s args=%s"%(action,ascii(args)))
  File "/usr/lib/python3/dist-packages/reportlab/lib/utils.py", line 1337, in annotateException
    rl_reraise(t,v,b)
  File "/usr/lib/python3/dist-packages/reportlab/lib/utils.py", line 136, in rl_reraise
    raise v                                                                                                                                                                                   
  File "/usr/lib/python3/dist-packages/reportlab/platypus/doctemplate.py", line 138, in apply                                                                                                 
    getattr(doc,arn)(*args)
  File "/usr/lib/python3/dist-packages/reportlab/platypus/doctemplate.py", line 537, in handle_pageBegin
    self.pageTemplate.onPage(self.canv,self)
  File "/media/daten/officeplanet/firmware/reportlab/pdf_invoice.py", line 179, in buildHeadFoot
    width=6.8*cm, height=1.7*cm)
  File "/usr/lib/python3/dist-packages/reportlab/pdfgen/canvas.py", line 920, in drawImage
    imgObj = pdfdoc.PDFImageXObject(name, image, mask=mask)
  File "/usr/lib/python3/dist-packages/reportlab/pdfbase/pdfdoc.py", line 2090, in __init__
    self.loadImageFromA85(src)
  File "/usr/lib/python3/dist-packages/reportlab/pdfbase/pdfdoc.py", line 2096, in loadImageFromA85
    imagedata = [s.strip() for s in pdfutils.makeA85Image(source,IMG=IMG)]
  File "/usr/lib/python3/dist-packages/reportlab/pdfbase/pdfutils.py", line 31, in makeA85Image
    img = ImageReader(filename)
  File "/usr/lib/python3/dist-packages/reportlab/lib/utils.py", line 759, in __init__
    annotateException('\nfileName=%r identity=%s'%(fileName,self.identity()))
  File "/usr/lib/python3/dist-packages/reportlab/lib/utils.py", line 1337, in annotateException
    rl_reraise(t,v,b)
  File "/usr/lib/python3/dist-packages/reportlab/lib/utils.py", line 136, in rl_reraise
    raise v
  File "/usr/lib/python3/dist-packages/reportlab/lib/utils.py", line 746, in __init__
    self._image = self._read_image(self.fp)
  File "/usr/lib/python3/dist-packages/reportlab/lib/utils.py", line 774, in _read_image
    return Image.open(fp)
  File "/usr/lib/python3/dist-packages/PIL/Image.py", line 2028, in open
    raise IOError("cannot identify image file")
OSError: cannot identify image file
fileName=<_io.BufferedReader name='/media/daten/officeplanet/firmware/reportlab/picture/Firmenkopf.png'> identity=[ImageReader@0x7f4c619e8940 filename='/media/daten/officeplanet/firmware/reportlab/picture/Firmenkopf.png']
handle_pageBegin args=()
[/Codebox]
Ich bin da ziemlich aufgeschmissen und hoffe, das Ihr mir zur Lösung des Fehlers helfen könnt.

Grüße Nobuddy
Nobuddy
User
Beiträge: 994
Registriert: Montag 30. Januar 2012, 16:38

Was ich gerade festgestellt habe!
Ich habe die png-Grafik in in eine gif-Grafik umgewandelt.
Mit der gif-Grafik, funktioniert reportlab wieder!
Die png-Grafik habe ich schon sehr lange Zeit unverändert im Einsatz und hat bisher immer funktioniert.

Gibt es da evtl. einen Bug?
Benutzeravatar
noisefloor
User
Beiträge: 3854
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

hast du PIL bzw. Pillow neu installiert oder aktualisiert? AFAIK braucht Pillow die zlib (oder libpng? oder beides?), damit es PNGs laden kann.

Jedenfalls hast du kein Problem mit Reportlab, sondern mit PIL bzw. Pillow.

Gruß, noisefloor
Nobuddy
User
Beiträge: 994
Registriert: Montag 30. Januar 2012, 16:38

Hallo noisefloor,

ja das ist wohl ein Problem mit PIL.

Ich verwende Kubuntu 14.04. Bei den Paketen ist python3-pil, zlib1g und libpng12-0 installiert.
Ich mache regelmässig Updates, vielleicht steckt da der Wurm in einem Paket ...
Jedenfalls werde ich das mal im Auge behalten und einige Zeit später nochmals mit der png-Grafik versuchen, vielleicht ist ja dann hoffentlich der Fehler wieder behoben.

Grüße Nobuddy
Nobuddy
User
Beiträge: 994
Registriert: Montag 30. Januar 2012, 16:38

Habe heute ein Update zu python3-pil erhalten.
Seit dem funktioniert es auch wieder mit der png-Grafik. :wink:
Benutzeravatar
noisefloor
User
Beiträge: 3854
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

warum installierst du die Module eigentlich nicht via pip? Dann hast du eine wesentlich bessere Kontrolle darüber, welche Version installiert ist / wird.

Gruß, noisefloor
Antworten