Python枕头:对一个imag应用多个过滤器和增强功能

2024-06-26 00:04:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想对上传的图片应用一些过滤器。过滤器基于用户输入的文本生成。到目前为止,函数的外观如下:

    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: object has no attribute ...

而“…”则不同,有时是增强,有时是getbands等。 总是ImageEnhance部分导致错误。GaussianBlur滤波器工作正常。。 我读过that解决方案,但这对我没有帮助。我想它太老了。。在

我是Python新手,所以可能我犯了一些基本错误。如果有人能帮忙我会很高兴的!在


Tags: 函数用户image文本self过滤器show错误
1条回答
网友
1楼 · 发布于 2024-06-26 00:04:22

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)

相关问题 更多 >