我是python的新手并试图在我的模型中使用ImageField
。我有一些与我想要上传的Django项目分开的文件中的图像。
所以我有一个Django模型
class Product(models.Model):
img_thumbnail = models.ImageField(upload_to='products_images',
blank=True, null=True)
在我上传图片的转换代码中,我想生成特定高度的缩略图,因此我无法使用:
img = Image.open(file_path)
img.thumbnail()
相反,我计算了必要的宽度并使用Pillow调整它的大小。
img = Image.open(file_path)
h_percent = (75/ float(img.size[1]))
if h_percent < 1:
width = int((float(img.size[0]) * float(h_percent)))
img = img.resize((width, base_height), Image.ANTIALIAS)
filename = os.path.basename(file_path)
工作正常但当我尝试将其保存到ImageField时,我收到一个错误:AttributeError:'JpegImageFile'对象没有属性'content'
product.img_thumbnail.save(filename, img, True)
在网上搜索时,我发现了对SimpleUploadedFile的引用。因此,请使用后缀编写已调整大小的图像。我收到了另一个错误; :'charmap'编解码器无法解码251位的字节0x81:字符映射到
file_root, file_ext = os.path.splitext(file_path)
new_file_name = file_root + '_thumbnail' + file_ext
img.save(new_file_name)
filename = os.path.basename(file_path)
with open(new_file_name) as infile:
_file = SimpleUploadedFile(filename, infile.read())
那我该怎么办?我正在使用Python 3.6和Django 2.0 谢谢你的帮助