Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IOError: cannot write mode RGBA as JPEG #2649

Closed
chrismytton opened this issue Jul 5, 2019 · 6 comments · Fixed by #2678
Closed

IOError: cannot write mode RGBA as JPEG #2649

chrismytton opened this issue Jul 5, 2019 · 6 comments · Fixed by #2678

Comments

@chrismytton
Copy link
Member

Internal Server Error: /search/autocomplete/
Traceback (most recent call last):
  File "/data/vhost/mzalendo.mysociety.org/pombola-virtualenv/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/data/vhost/mzalendo.mysociety.org/pombola/pombola/search/views.py", line 469, in autocomplete
    image_url = get_thumbnail(image, '16x16', crop="center").url
  File "/data/vhost/mzalendo.mysociety.org/pombola-virtualenv/lib/python2.7/site-packages/sorl/thumbnail/shortcuts.py", line 8, in get_thumbnail
    return default.backend.get_thumbnail(file_, geometry_string, **options)
  File "/data/vhost/mzalendo.mysociety.org/pombola-virtualenv/lib/python2.7/site-packages/sorl/thumbnail/base.py", line 125, in get_thumbnail
    thumbnail)
  File "/data/vhost/mzalendo.mysociety.org/pombola-virtualenv/lib/python2.7/site-packages/sorl/thumbnail/base.py", line 158, in _create_thumbnail
    default.engine.write(image, options, thumbnail)
  File "/data/vhost/mzalendo.mysociety.org/pombola-virtualenv/lib/python2.7/site-packages/sorl/thumbnail/engines/base.py", line 139, in write
    progressive=progressive
  File "/data/vhost/mzalendo.mysociety.org/pombola-virtualenv/lib/python2.7/site-packages/sorl/thumbnail/engines/pil_engine.py", line 228, in _get_raw_data
    image.save(bf, **params)
  File "/data/vhost/mzalendo.mysociety.org/pombola-virtualenv/lib/python2.7/site-packages/PIL/Image.py", line 2007, in save
    save_handler(self, fp, filename)
  File "/data/vhost/mzalendo.mysociety.org/pombola-virtualenv/lib/python2.7/site-packages/PIL/JpegImagePlugin.py", line 622, in _save
    raise IOError("cannot write mode %s as JPEG" % im.mode)
IOError: cannot write mode RGBA as JPEG

https://groups.google.com/a/mysociety.org/d/msg/cron-mzalendo/JhgdoVv3G2M/hh3oBWD_AAAJ

@chrismytton
Copy link
Member Author

Looks like this is due to a change in Pillow: python-pillow/Pillow#2609

@chrismytton
Copy link
Member Author

The original stacktrace is from Mzalendo, but it's happening on PA as well, with a different stacktrace.

Internal Server Error: / 
Traceback (most recent call last): 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/core/handlers/base.py", line 164, in get_response 
    response = response.render() 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/response.py", line 158, in render 
    self.content = self.rendered_content 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/response.py", line 135, in rendered_content 
    content = template.render(context, self._request) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/backends/django.py", line 74, in render 
    return self.template.render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 210, in render 
    return self._render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 202, in _render 
    return self.nodelist.render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 905, in render 
    bit = self.render_node(node, context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 919, in render_node 
    return node.render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/loader_tags.py", line 135, in render 
    return compiled_parent._render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 202, in _render 
    return self.nodelist.render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 905, in render 
    bit = self.render_node(node, context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 919, in render_node 
    return node.render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/loader_tags.py", line 135, in render 
    return compiled_parent._render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 202, in _render 
    return self.nodelist.render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 905, in render 
    bit = self.render_node(node, context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 919, in render_node 
    return node.render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/loader_tags.py", line 65, in render 
    result = block.nodelist.render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 905, in render 
    bit = self.render_node(node, context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 919, in render_node 
    return node.render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/loader_tags.py", line 65, in render 
    result = block.nodelist.render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 905, in render 
    bit = self.render_node(node, context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 919, in render_node 
    return node.render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/defaulttags.py", line 329, in render 
    return nodelist.render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 905, in render 
    bit = self.render_node(node, context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/django/template/base.py", line 919, in render_node 
    return node.render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/sorl/thumbnail/templatetags/thumbnail.py", line 59, in render 
    return self._render(context) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/sorl/thumbnail/templatetags/thumbnail.py", line 137, in _render 
    thumbnail = get_thumbnail(file_, geometry, **options) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/sorl/thumbnail/shortcuts.py", line 8, in get_thumbnail 
    return default.backend.get_thumbnail(file_, geometry_string, **options) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/sorl/thumbnail/base.py", line 125, in get_thumbnail 
    thumbnail) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/sorl/thumbnail/base.py", line 158, in _create_thumbnail 
    default.engine.write(image, options, thumbnail) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/sorl/thumbnail/engines/base.py", line 139, in write 
    progressive=progressive 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/sorl/thumbnail/engines/pil_engine.py", line 228, in _get_raw_data 
    image.save(bf, **params) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/PIL/Image.py", line 2007, in save 
    save_handler(self, fp, filename) 
  File "/data/vhost/www.pa.org.za/pombola-virtualenv/lib/python2.7/site-packages/PIL/JpegImagePlugin.py", line 622, in _save 
    raise IOError("cannot write mode %s as JPEG" % im.mode) 
IOError: cannot write mode RGBA as JPEG

https://groups.google.com/a/mysociety.org/d/msg/cron-pa/07I2kV28bIc/Is5G_zcWAgAJ

@chrismytton
Copy link
Member Author

Guessing this might have been caused by the Pillow upgrade in #2584.

@chrismytton
Copy link
Member Author

Searching for "George Magoha" on Mzalendo seems to trigger this error.

http://info.mzalendo.com/search/?q=George+Magoha&section=persons&order=relevance

@chrismytton
Copy link
Member Author

This error was causing the homepage of pa.org.za to return a 500 error. My temporary workaround was to simply downgrade Pillow: 9bcc0a3

@chrismytton
Copy link
Member Author

Looks like this was fixed in sorl-thumbnail 12.4.1. The latest version is 12.5, but that doesn't have support for Django 1.8, so let's give 12.4.1 a try for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant