我正在使用 python 函数来调整 Django 中用户上传的图像的大小。我使用BytesIO()和InMemoryUploadedFile()类将pillow对象转换为 DjangoUplodedFile并将其保存在模型中。这是我如何实例化InMemoryUploadedFile对象
from PIL import Image
import io
import PIL
import sys
from django.core.files.uploadedfile import InMemoryUploadedFile
def image_resize(image,basewidth):
img_io = io.BytesIO()
img = Image.open(image)
percent = (basewidth / float(img.size[0]))
hsize = int(float(img.size[1]) * percent)
img = img.resize((basewidth, hsize),PIL.Image.ANTIALIAS)
img.save(img_io, format="JPEG")
new_pic= InMemoryUploadedFile(img_io,
'ImageField',
'profile_pic',
'JPEG',
sys.getsizeof(img_io), None)
return new_pic
Run Code Online (Sandbox Code Playgroud)
但这会调整图像大小,并且不会将文件保存为 jpeg,它会使用 File 类型保存文件,但何时用它替换文件名会profile_pic.jpg保存为 jpeg 类型。为什么会发生这种情况