1

我正在尝试使图像的一部分模糊。最终我想模糊脸部,但我不能只模糊一部分。我正在尝试裁剪图像的一部分,然后将其粘贴回原始图像。我可以裁剪它,但是当我保存粘贴了裁剪区域的图像时,我收到“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")

我真的很感激帮助。

4

2 回答 2

4

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

IE。

#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")
于 2013-10-22T02:41:25.337 回答
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")

如果这不是正确的库,或者不能解决您的问题,请告诉我。

于 2013-10-22T02:40:46.987 回答