我正在创建一个名为Image的模型,该模型有一个方法可以保存另一个版本的不同大小。但我不能让新版本的ImageField接受保存的图像文件。它在save方法上失败,'NoneType'对象不可订阅。
def newversion(self, size):
""" Save a new version of the image """
image_version = Image(user=self.user, original=self)
image_version.save()
path, old_name = os.path.split(self.image.path)
ext = os.path.splitext(old_name)[1]
vsn_name = "{0}{1}".format(str(image_version.id),ext)
vsn_path = os.path.join(path, vsn_name)
pil_image = PIL.Image.open(self.image.path)
if pil_image.mode not in ('L','RGB'):
pil_image = pil_image.convert('RGB')
pil_image.thumbnail(size, PIL.Image.ANTIALIAS)
pil_image.save(vsn_path, pil_image.format)
image_version.image.save(vsn_name,ImageFile(open(vsn_path)), True)
答案 0 :(得分:1)
这是因为我在Windows上,我需要用“rb”打开文件:
open(vsn_path, 'rb')