OSError при открытии образа .heic с помощью PIL - PullRequest
0 голосов
/ 07 июля 2019

Мое приложение django позволяет пользователям загружать изображения в свою учетную запись.Я использую JQuery файл загрузки для асинхронной обработки.В моем представлении загрузки я использую PIL для выполнения некоторых основных манипуляций с изображениями (изменяйте размер, поворачивайте при необходимости).

Соответствующая часть представления для загрузки изображения ниже:

def group_photo_upload_desktop(request):
    if request.method == 'POST':
        try:
            group_id = request.POST.get('group_id')
            uploaded_image = request.FILES.get("image", default=None)

            image = Image.open(uploaded_image)
            image = autorotate_image(image)
            image = resize_image(image)

Иногда,Я начал видеть сбой кода, когда PIL пытается открыть изображение.Изображение с ошибкой всегда имеет формат .heic и на данный момент встречается только с одним пользователем (всего 7 пользователей, поэтому выборка невелика), который загружает изображение с iPhone (не уверен в точной версии).

Что меня действительно смущает, так это то, что подавляющее большинство изображений .heic загружаются очень хорошо для пользователя и часто загружаются успешно после нескольких часов задержки.

Ниже приведена трассировка недавней ошибки.

File "/home/EscapeKit/socialwaiver/core/views_group_detail_desktop.py", line 308, in group_photo_upload_desktop
  image = Image.open(uploaded_image)
File "/home/EscapeKit/.virtualenvs/venv/lib/python3.5/site-packages/PIL/Image.py", line 2622, in open
  % (filename if filename else fp))
OSError: cannot identify image file <TemporaryUploadedFile: 20190706_154803.heic (application/octet-stream)>

И request.FILES

<MultiValueDict: {'image': [<TemporaryUploadedFile: 20190706_154803.heic (application/octet-stream)>]}>

Я получил от пользователя отправившую мне недостающую фотографию, но не смог сам повторить ошибку.Опять же, ошибка редкая (большинство изображений .heic вместе с другими изображениями загружаются нормально), но достаточно часто, чтобы стать серьезным раздражением для меня и пользователя.

Любая помощь будет принята с благодарностью.Это меня совершенно озадачило.

...