envoi d'image png #133

Closed
opened 2021-09-22 18:56:34 +02:00 by yann · 2 comments
Contributor

lors de l'envoi d'une image png (exemple attaché), j'ai ce message :

[2021-09-22 10:38:58,174] XXX@127.0.0.1 requested https://notes.cva.parisnanterre.fr/ScoDoc/GEA/Scolarite/formChangePhoto
ERROR: Exception on /ScoDoc/GEA/Scolarite/formChangePhoto [POST]
Traceback (most recent call last):
  File "/opt/scodoc/venv/lib/python3.9/site-packages/PIL/JpegImagePlugin.py", line 629, in _save
    rawmode = RAWMODE[im.mode]
KeyError: 'RGBA'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 2070, in wsgi_app
    response = self.full_dispatch_request()
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1515, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1513, in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1499, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(req.view_args)
  File "/opt/scodoc/app/decorators.py", line 124, in scodoc_function
    return func(*args, kwargs)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/flask_login/utils.py", line 272, in decorated_view
    return func(args, **kwargs)
  File "/opt/scodoc/app/decorators.py", line 137, in decorated_function
    return f(args, kwargs)
  File "/opt/scodoc/app/decorators.py", line 261, in scodoc7func_decorator
    value = func(*pos_arg_values, kwargs)
  File "/opt/scodoc/app/views/scolar.py", line 853, in formChangePhoto
    status, diag = sco_photos.store_photo(etud, data)
  File "/opt/scodoc/app/scodoc/sco_photos.py", line 249, in store_photo
    filename = save_image(etud["etudid"], data)
  File "/opt/scodoc/app/scodoc/sco_photos.py", line 301, in save_image
    img.save(path + IMAGE_EXT, format="JPEG", quality=92)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/PIL/Image.py", line 2235, in save
    save_handler(self, fp, filename)
  File "/opt/scodoc/venv/lib/python3.9/site-packages/PIL/JpegImagePlugin.py", line 631, in _save
    raise OSError(f"cannot write mode {im.mode} as JPEG") from e
OSError: cannot write mode RGBA as JPEG
lors de l'envoi d'une image png (exemple attaché), j'ai ce message : ``` [2021-09-22 10:38:58,174] XXX@127.0.0.1 requested https://notes.cva.parisnanterre.fr/ScoDoc/GEA/Scolarite/formChangePhoto ERROR: Exception on /ScoDoc/GEA/Scolarite/formChangePhoto [POST] Traceback (most recent call last): File "/opt/scodoc/venv/lib/python3.9/site-packages/PIL/JpegImagePlugin.py", line 629, in _save rawmode = RAWMODE[im.mode] KeyError: 'RGBA' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 2070, in wsgi_app response = self.full_dispatch_request() File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1515, in full_dispatch_request rv = self.handle_user_exception(e) File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1513, in full_dispatch_request rv = self.dispatch_request() File "/opt/scodoc/venv/lib/python3.9/site-packages/flask/app.py", line 1499, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(req.view_args) File "/opt/scodoc/app/decorators.py", line 124, in scodoc_function return func(*args, kwargs) File "/opt/scodoc/venv/lib/python3.9/site-packages/flask_login/utils.py", line 272, in decorated_view return func(args, **kwargs) File "/opt/scodoc/app/decorators.py", line 137, in decorated_function return f(args, kwargs) File "/opt/scodoc/app/decorators.py", line 261, in scodoc7func_decorator value = func(*pos_arg_values, kwargs) File "/opt/scodoc/app/views/scolar.py", line 853, in formChangePhoto status, diag = sco_photos.store_photo(etud, data) File "/opt/scodoc/app/scodoc/sco_photos.py", line 249, in store_photo filename = save_image(etud["etudid"], data) File "/opt/scodoc/app/scodoc/sco_photos.py", line 301, in save_image img.save(path + IMAGE_EXT, format="JPEG", quality=92) File "/opt/scodoc/venv/lib/python3.9/site-packages/PIL/Image.py", line 2235, in save save_handler(self, fp, filename) File "/opt/scodoc/venv/lib/python3.9/site-packages/PIL/JpegImagePlugin.py", line 631, in _save raise OSError(f"cannot write mode {im.mode} as JPEG") from e OSError: cannot write mode RGBA as JPEG ```
viennet added the
bug
label 2021-09-22 22:50:47 +02:00
Owner
  • voir ce qu'il est possible de faire pour traiter ce type d'image (non prioritaire a priori);

  • et surtout capter l'exception bas niveau pour lancer une FormatError ou équivalent et présenter une page d'erreur intelligible pour l'utilisateur) (nb: laisser traceback original dans le log).

- voir ce qu'il est possible de faire pour traiter ce type d'image (non prioritaire a priori); - et surtout capter l'exception bas niveau pour lancer une FormatError ou équivalent et présenter une page d'erreur intelligible pour l'utilisateur) (nb: laisser traceback original dans le log).
Owner
- message erreur ok si fichier invalide (non image) - l'erreur mentionnée sur l'image spécifique est lié au canal alpha (transparence) non généré en JPEG. Voir https://github.com/python-pillow/Pillow/issues/2609 On a ajouté im = im.convert("RGB")
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: ScoDoc/ScoDoc#133
No description provided.