Python AttributeError:'NoneType'对象在尝试保存裁剪图像时没有属性'save'

时间:2013-10-22 02:35:13

标签: python python-imaging-library

我试图让图像的一部分模糊。最终我想模糊面孔,但我不能只是模糊一部分。我试图裁剪图像的一部分然后将其粘贴回原始图像。我能够裁剪它,但是当我去粘贴裁剪区域的图像时,我收到一个“AttributeError:'NoneType'对象没有属性'save'”

以下是我正在使用的代码:

import Image, ImageFilter

picture = Image.open("picture1.jpg")

#finds width and height of picture
width, height = picture.size

#crops the picture
box = (20, 20, width/2, height/2)
ic = picture.crop(box)

#blurs the cropped part of the picture
ic = ic.filter(ImageFilter.GaussianBlur(radius=20))

#pastes the image back    
blurredPic = picture.paste(ic, box)

#saves the new image and the cropped image
blurredPic.save("BlurredPic.jpg")
ic.save("cropPic.jpg")

我真的很感激帮助。

2 个答案:

答案 0 :(得分:4)

picture.paste(ic, box)就地picture变异并返回None

#blurs the cropped part of the picture
ic = ic.filter(ImageFilter.GaussianBlur(radius=20))

#pastes the image back    
picture.paste(ic, box)

#saves the new image and the cropped image
picture.save("BlurredPic.jpg")
ic.save("cropPic.jpg")

答案 1 :(得分:0)

我不确定这是否是您正在使用的库,但我在此处找到了一些图像库示例:http://www.riisen.dk/dop/pil.html。看一下Transpose示例,它看起来就像粘贴函数一样。

当你调用picture.paste(ic,box)时,你正在做的是更新图片,而不是返回任何内容。因此,blurredPic的值为None,自然没有“save”属性。

我会将最后3行更改为:

picture.paste(ic, box)

#saves the new image and the cropped image
picture.save("BlurredPic.jpg")
ic.save("cropPic.jpg")

如果那不是正确的库,或者说没有解决问题,请告诉我。