我想对上传的图片应用一些过滤器。过滤器是根据用户输入的文本生成的。该函数到目前为止的外观:
def validate_email(self):
textboxValue = self.lineEdit.text()
image = self.open()
for c in textboxValue:
if c == 'a':
image = image.filter(ImageFilter.GaussianBlur(1.05)).show()
elif c == 'b':
image = ImageEnhance.Brightness(image)
image.enhance(1.1).show()
elif c == 'c':
image = ImageEnhance.Contrast(image)
image = image.enhance(1.1).show()
elif c == '@':
image = ImageOps.grayscale(image).show()
else:
print(c)
我很确定昨天我的代码可以正常工作,但是今天我不断收到错误
AttributeError:对象没有属性...
和“ ...”不同,有时是增强,有时是 getbands 等。 始终是导致错误的 ImageEnhance 部分。 GaussianBlur 过滤器工作正常。 我读到有关that解决方案的信息,但这对我没有帮助。我认为它太旧了。
我是Python的新手,所以也许我犯了一些基本的错误。如果有人可以帮我,我会很高兴!
答案 0 :(得分:1)
Image.show()
方法不会返回图像。
实际上,高斯模糊滤镜也有同样的问题,但是它是从新图像开始的。
只需将show方法调用分开,就可以了。
def validate_email(self):
textboxValue = self.lineEdit.text()
image = self.open()
for c in textboxValue:
if c == 'a':
image = image.filter(ImageFilter.GaussianBlur(1.05))
image.show()
elif c == 'b':
e = ImageEnhance.Brightness(image)
image = e.enhance(1.1)
image.show()
elif c == 'c':
e = ImageEnhance.Contrast(image)
image = e.enhance(1.1)
image.show()
elif c == '@':
image = ImageOps.grayscale(image)
image.show()
else:
print(c)