使用带有ImageField的枕头大小调整

2024-04-20 00:54:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,正在尝试在我的模型中使用ImageField。我的Django项目中有一些图片需要上传。在

所以我有一个Django模型

class Product(models.Model):
    img_thumbnail = models.ImageField(upload_to='products_images',
                                      blank=True, null=True)

在上传图像的转换代码中,我想在特定高度生成缩略图,这样我就不能使用:

^{pr2}$

取而代之的是,我计算出所需的宽度并使用枕头调整大小。在

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())

那我该怎么办?我在Django 2.0中使用python3.6 谢谢你的帮助


Tags: pathdjangoname模型trueimgnewos