我正在尝试在项目上传之前调整图像大小并降低图像质量。这是我尝试过的,
def save(self):
im = Image.open(self.image)
output = BytesIO()
im = im.resize(240, 240)
im.save(output, format='JPEG', quality=95)
output.seek(0)
self.image = InMemoryUploadedFile(output, 'ImageField', "%s.jpg" % self.image.name.split('.')[0], 'image/jpeg', sys.getsizeof(output), None)
super(Model, self).save()
如果我上传
jpg
就可以了图像但如果我上传 png
或任何其他图像类型,它不起作用它会引发类似 cannot write mode RGBA as JPEG
的错误& cannot write mode P as JPEG
等等。我们怎样才能解决这个问题?谢谢你!
最佳答案
如果你的 image.mode 是 "P"或 "RGBA"并且你想把它转换成 jpeg 那么你需要先转换 image.mode
因为 jpeg 不支持以前的模式
if im.mode in ("RGBA", "P"):
im = im.convert("RGB")
https://github.com/python-pillow/Pillow/issues/2609
关于python - 图像转换 - 无法将 RGBA 模式写入 JPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48206051/