我有一个处理上传的jpg文件的功能,但是当用户上传png时崩溃。如何调整(如果可能)我的函数以适当地处理png文件?
from io import BytesIO
from django.core.files.uploadedfile import InMemoryUploadedFile
from sys import getsizeof
image = self.cleaned_data.get("image")
if not image:
image = ''
return image
size = (145,145)
im = Image.open(image)
output = BytesIO()
im.thumbnail(size)
im.save(output, format='JPEG', quality=100)
output.seek(0)
image = InMemoryUploadedFile(output,'ImageField', "%s.jpg" %image.name.split('.')[0], 'image/jpeg', getsizeof(output), None)
return image
答案 0 :(得分:0)
我已经开始工作了。可能不是最好的方法。
from PIL import Image
from io import BytesIO
from django.core.files.uploadedfile import InMemoryUploadedFile
from sys import getsizeof
image = self.cleaned_data.get("image")
if not image:
image = ''
return image
size = (145,145)
im = Image.open(image)
output = BytesIO()
im.thumbnail(size)
try:
im.save(output, format='JPEG', quality=100)
output.seek(0)
image = InMemoryUploadedFile(output,'ImageField', "%s.jpg" %image.name.split('.')[0], 'image/jpeg', getsizeof(output), None)
except:
im.save(output, format='PNG', quality=100)
output.seek(0)
image = InMemoryUploadedFile(output,'ImageField', "%s.png" %image.name.split('.')[0], 'image/png', getsizeof(output), None)
return image