python - 图像转换 - 无法将 RGBA 模式写入 JPEG

标签 python django

我正在尝试在项目上传之前调整图像大小并降低图像质量。这是我尝试过的,

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/

相关文章:

python - Django 按小时分组

python - 使用 UUIDField 作为主键时如何判断模型实例是否是新的

python - 不涉及request.POST.getlist的Django admin中间页面_selected_action的正确设置方法是什么?

python - 将字典列表转换为一组字典

python - 在 Keras 中从 .jpg 创建标准化数据集

python - 堆算法两次产生相同的排列

Django 和 Apache 问题

python - django 中的数据库一次性设置

python - DataFrame 的字典列表

python - 获取文件Python中某个短语的行号