在Python PIL中使用立方插值的图像



嗨,我只是尝试使用立方插值将大小(a,b,3)的一批图像大小调整到更大尺寸的(c, d, 3) (c>a, d>b)。但是,每当我似乎在首先成功调整大小后再次打开调整大小的图像时,我就发现了旧的维度...这发生在我试验中的每个图像和每个维度上都发生了……有人可以友好地指出我缺少的东西吗?非常感谢!

这是我的代码:

from PIL import Image
im = Image.open("img0.jpg").convert("RGB")
im # the original size
<PIL.Image.Image image mode=RGB size=600x337 at 0x102D83450>
im.resize((800,400),Image.BICUBIC)
<PIL.Image.Image image mode=RGB size=800x400 at 0x102D834D0> # thought I was doing it right
im.save("resized.jpg")
im=Image.open("resized.jpg").convert("RGB")
im
<PIL.Image.Image image mode=RGB size=600x337 at 0x102D83490> # and the actual size seems even smaller than before!

图像调整大小不会在就位进行。返回了一个新的,调整大小的图像,因此您必须保存它。

new_img = im.resize((800,400),Image.BICUBIC)
new_img.save("resized.jpg")

im.resize((800,400),Image.BICUBIC).save("resized.jpg")

方法或函数是否对"到位"进行更改(这意味着没有返回值可以抓取和使用,也没有返回一个值)或返回您必须使用的值,您必须使用该值取决于创建者的创建者方法或功能。您总是可以通过反复试验来解决这个问题,但是更好的方法是查看文档。例如,对于resize() PIL/枕头方法,请查看https://pillow.readthedocs.io/en/3.4.x/reference/image.html#pil.image.image.image.image.imize。在那里您会看到功能

返回此图像的调整大小副本。

告诉您,您必须使用返回值做点事,以保留该方法的效果。

此外,如果您访问http://effbot.org/imagingbook/image.htm,然后跳到resize,您会看到它说:

调整#

im.resize(size)⇒图像

im.resize(大小,过滤器)⇒图像

指向右侧的"箭头"是表示该方法返回值的符号。在这种情况下,它返回图像。

最新更新