Django- как преобразовать <class 'django.core.files.uploadedfile.InMemoryUploadedFile'> в изображение?
У меня есть форма, которая загружает изображение в представление; тип загружаемого изображения:
<class 'django.core.files.uploadedfile.InMemoryUploadedFile'>
Однако я хочу обработать изображение, поэтому оно мне нужно в формате PIL или CV2.
Как я могу это сделать?
Django File
фактически реализует все необходимые методы типичного файлового объекта, который нужен PIL.Image.open()
. А InMemoryUploadedFile
- это Django File
.
You can reopen the File
in the correct mode
and then pass it to PIL.Image.open()
. This should suffice: [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.