Отображение счетчика во время загрузки изображения - PullRequest
0 голосов
/ 13 мая 2019

Я настраиваю приложение django на heroku, которое использует S3 для хранения и django-ckeditor, чтобы пользователи могли отправлять довольно богатые сообщения, включая изображения. Все работает в том, что пользователи могут отправлять сообщения, включая изображения, но я хотел бы иметь возможность отображать счетчик во время загрузки или обработки изображения.

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

Я внес некоторые изменения в файл pillow_backend.py, чтобы исправить ориентацию изображения и изменить его размер, чтобы, возможно, я мог бы использовать плагин уведомлений для отображения сообщения во время этой обработки, просто не зная, как это сделать.

Изображения хранятся на S3

if imager.height > 600 or imager.width > 600:
                # quality = getattr(settings, "CKEDITOR_IMAGE_QUALITY", 90)
                try:
                    for orientation in ExifTags.TAGS.keys():
                        if ExifTags.TAGS[orientation] == 'Orientation':
                            break
                    exif = dict(imager._getexif().items())

                    if exif[orientation] == 3:
                        imager = imager.rotate(180, expand=True)
                    elif exif[orientation] == 6:
                        imager = imager.rotate(270, expand=True)
                    elif exif[orientation] == 8:
                        imager = imager.rotate(90, expand=True)

                except (AttributeError, KeyError, IndexError):
                    pass
                basewidth = 600
                wpercent = (basewidth/float(imager.size[0]))
                hsize = int((float(imager.size[1])*float(wpercent)))
                imager = imager.resize((basewidth,hsize), Image.ANTIALIAS)
                in_mem_file = io.BytesIO()
                if filepath.endswith('.jpg'):
                    imager.save(in_mem_file, format='JPEG')
                else:
                    imager.save(in_mem_file, format='PNG')
                img_write = storage.open(filepath, 'w+')
                img_write.write(in_mem_file.getvalue())
                img_write.close()

Ожидайте, чтобы показать пользователю некоторые признаки того, что изображение загружается / обрабатывается.

...