为什么在Pillow-Python中调整图像大小会删除Image.format?

7
我正在使用Pillow在Python中调整图像大小。
image = Image.open("image_file.jpg")

print(image.format) # Prints JPEG

resized_image = image.resize([100,200],PIL.Image.ANTIALIAS)

print(resized_image.format) # Prints None!!

为什么resized_image.format的值是None

如何在使用pillow进行调整大小时保留格式?


1
如果您担心无法将新图像保存为jpg格式,请尝试一下 - 我相信即使resized_image.format不是“JPEG”,resized_image.save(“output.jpg”)也可以正常工作。 - Kevin
@Kevin 是的,它成功了 :) 虽然我认为在调整大小时应该传递格式属性。 - wolfgang
3个回答

14

因为Image.resize会创建一个新的Image对象(图像的缩放副本),对于任何由库本身创建的图像(通过工厂函数或在现有图像上运行方法),"format"属性设置为None

如果您需要格式属性,仍然可以这样做:

image = Image.open("image_file.jpg") #old image object
resized_image = image.resize([100,200],PIL.Image.ANTIALIAS)
resized_image.format = image.format # original image extension

阅读文档


5

文档中所述:

源文件的文件格式。对于由库本身创建的图像(通过工厂函数或在现有图像上运行方法),此属性设置为None。

您可以在保存时指定格式:

image.save(fp, 'JPEG')

1
你可以使用保存注释来保存调整大小后的图像。
resized_image.save("New_image.png")

它将保存到您当前的目录中。
如果您想在Python控制台中查看,您需要运行
resized_image.show()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接