У меня есть форма, которая загружает изображение в мое представление; тип загруженного изображения:
<class 'django.core.files.uploadedfile.InMemoryUploadedFile'>
Однако я хочу обработать изображение; поэтому мне это нужно в формате PIL или CV2.
Как мне это сделать ?
Django File
фактически реализует все необходимые PIL.Image.open()
методы типичного файлового объекта. InMemoryUploadedFile
— это Джанго File
.
Вы можете повторно открыть File
в правильном mode
, а затем передать его PIL.Image.open()
. Этого должно быть достаточно: [1]
someFile: InMemoryUploadedFile = # •••Already has a value•••
someFile = someFile.open("b+")
with PIL.Image.open(someFile) as img:
# •••Do something•••
[1] The solution doesn’t copy the underlying bytes of the file object but simply passes a handle of it from one routine to another. BEWARE OF DATA RACES.
Большое спасибо, ваше решение сработало отлично +1.
Спасибо за ваш ответ; он действительно дал изображение PIL, но что мне делать, если мне понадобится изображение «CV2»?