Django, загрузка изображений в формате tif
Я пытаюсь загрузить изображение в формате tif (в оттенках серого), используя django ImageField. Я установил Pillow==8.3.1 и использую Python 3.9. Приложение работает только с изображениями PNG/JPEG.
Вот модель, которую я использую:
class Upload(models.Model):
image = models.ImageField(upload_to='images')
title = models.CharField(max_length=200)
action = models.CharField(max_length=50,choices=ACTION_CHOICES)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
#breakpoint()
# def __str__(self):
# pixels = tfi.imread(self.image)
# return np.shape(np.array(pixels))
def save(self,*args,**kwargs):
#open image
#breakpoint()
if self.action=='tif':
pixels = tfi.imread(self.image)
else:
pixels = Image.open(self.image)
#pixels = tfi.imread(self.image)
pixels = np.array(pixels)
pixels=pixels[:,:,0]
#pixels = pixels[0,:,:]
#use the normalisation method
img = get_image(pixels)
im_pil=Image.fromarray(img)
#save
buffer = BytesIO()
im_pil.save(buffer,format='png')
image_png = buffer.getvalue()
self.image.save(str(self.image), ContentFile(image_png),save=False)
super().save(*args,**kwargs)
#return self.image_png
Для работы ImageField в Django требуется сторонний пакет Pillow. Он зависит от pillow для проверки того, является ли файл изображением или нет. Это зависит не от типа файла, а от содержимого самого файла. Пожалуйста, проверьте версию используемого вами pillow и ознакомьтесь с соответствующей документацией по вашей версии pillow.
https://pypi.org/project/Pillow/
поддерживаемый формат изображения подушкой 8.3.1
но если все же что-то не работает, вы всегда можете использовать FileField, который не ищет, какой файл или формат вы загружаете, пока вы не загрузите файл, пожалуйста, ознакомьтесь с документацией
https://www.geeksforgeeks.org/filefield-django-models/
хотя я бы рекомендовал вам использовать imagefield только для изображений и прочитать документацию теперь это полностью зависит от вас, что вы хотите использовать и скажите мне, если вы все еще получаете любую другую ошибку, то я рад помочь