Подушка возвращает ошибку: "IOError: файл изображения усечен (6 байт не обработано)"


Я использую подушку 4.1.1 с Python 2.7 / Django 1.9

У меня есть десятки тысяч загруженных пользователем фотографий на моем веб-сайте, и я использую pillow для создания эскизов из шаблонов.

Например:

{% thumbnail apicture.file "1200x350" crop="center" as im %}
    <img src="{{ im.url }}" width=100%>
{% endthumbnail %}
До этой недели он работал очень хорошо. Теперь Django показывает эту ошибку:
IOError: image file is truncated (6 bytes not processed)

Решения, найденные в stackoverflow, не работают, так как все они применяются к представлениям, а не шаблонам (например, ImageFile.LOAD_TRUNCATED_IMAGES = True).

Есть ли простой способ определите, какие изображения генерируют эту ошибку ? Как решить эту проблему ?

Вот полный traceback:

Internal Server Error: /trip/province-dublin-2034
Traceback (most recent call last):
  File "C:Python27libsite-packagesdjangocorehandlersbase.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:Python27libsite-packagesdjangocorehandlersbase.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)    
  File "C:Terradiemterradiemtripviews.py", line 300, in trip
    return render(request, 'trip/results.html', qsall)
  File "C:Python27libsite-packagesdjangoshortcuts.py", line 67, in render template_name, context, request=request, using=using)
  File "C:Python27libsite-packagesdjangotemplateloader.py", line 97, in render_to_string
    return template.render(context, request)
  File "C:Python27libsite-packagesdjangotemplatebackendsdjango.py", line 95, in render
    return self.template.render(context)
  File "C:Python27libsite-packagesdjangotemplatebase.py", line 206, in render
    return self._render(context)
  File "C:Python27libsite-packagesdjangotestutils.py", line 92, in instrumented_test_render
    return self.nodelist.render(context)
  File "C:Python27libsite-packagesdjangotemplatebase.py", line 992, in render
    bit = node.render_annotated(context)
  File "C:Python27libsite-packagesdjangotemplatebase.py", line 959, in render_annotated
    return self.render(context)
  File "C:Python27libsite-packagesdjangotemplatedefaulttags.py", line 220, in render
    nodelist.append(node.render_annotated(context))
  File "C:Python27libsite-packagesdjangotemplatebase.py", line 959, in render_annotated
    return self.render(context)
  File "C:Python27libsite-packagesdjangotemplatedefaulttags.py", line 220, in render
    nodelist.append(node.render_annotated(context))
  File "C:Python27libsite-packagesdjangotemplatebase.py", line 959, in render_annotated
    return self.render(context)
  File "C:Python27libsite-packagesdjangotemplatedefaulttags.py", line 326, in render
    return nodelist.render(context)
  File "C:Python27libsite-packagesdjangotemplatebase.py", line 992, in render
    bit = node.render_annotated(context)
  File "C:Python27libsite-packagesdjangotemplatebase.py", line 959, in render_annotated
    return self.render(context)
  File "C:Python27libsite-packagessorlthumbnailtemplatetagsthumbnail.py", line 59, in render
    return self._render(context)
  File "C:Python27libsite-packagessorlthumbnailtemplatetagsthumbnail.py", line 137, in _render
    thumbnail = get_thumbnail(file_, geometry, **options)
  File "C:Python27libsite-packagessorlthumbnailshortcuts.py", line 8, in get_thumbnail
    return default.backend.get_thumbnail(file_, geometry_string, **options)
  File "C:Python27libsite-packagessorlthumbnailbase.py", line 125, in get_thumbnail
    thumbnail)
  File "C:Python27libsite-packagessorlthumbnailbase.py", line 157, in _create_thumbnail
    image = default.engine.create(source_image, geometry, options)
  File "C:Python27libsite-packagessorlthumbnailenginesbase.py", line 21, in create
    image = self.colorspace(image, geometry, options)
  File "C:Python27libsite-packagessorlthumbnailenginesbase.py", line 53, in colorspace
    return self._colorspace(image, colorspace)
  File "C:Python27libsite-packagessorlthumbnailenginespil_engine.py", line 101, in _colorspace
    return image.convert('RGB')
  File "C:Python27libsite-packagesPILImage.py", line 844, in convert
self.load()
  File "C:Python27libsite-packagesPILImageFile.py", line 226, in load
"(%d bytes not processed)" % len(b))
IOError: image file is truncated (6 bytes not processed)

Спасибо

1 3

1 ответ:

Хорошо, я получил ответ на свой собственный вопрос!

Как прокомментировал лепш, просто добавьте

from PIL import Image, ImageFile ImageFile.LOAD_TRUNCATED_IMAGES = True

Как можно раньше в приложении django. Я добавил его в представление, создающее страницу, и он отлично работает.