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.

Вернуться на верх