一行代码获取PIL的所有滤镜的class对象

本文介绍如何使用Python的inspect库一键获取PIL库中所有ImageFilter模块的滤镜,并批量应用于图片,实现高效图像处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你也想赚钱,实现财务自由,但接触不到优质的人脉和资源,可以到公June浩:成长home,发"资源" ,就会看到我吐血整理的168条保姆级零基础吸金秘籍,跟着我一起亲历毕业5年、创业3年、从0到1000万的嗨翻全场的爆发式成长全过程。

如果你使用过PIL的话,还顺便听说过名叫“ImageFilter”的二级模块的话,那你大概能猜出来,PIL库的滤镜通通都在这个二级模块中。

而你如果打开这个二级模块的文件的话,就可以看到里面有很多滤镜,而且这些滤镜都是以class的形式存在的,就像下图:
滤镜的类

那么,如果你想用所有的滤镜对同一照片进行处理,又突然懒癌发作,不想一个一个地输滤镜的名称,那你可以考虑一键获取所有滤镜的class,但是问题来了,似乎并没有现成的方法?

不用着急,解决方法是存在的,而且已经内置在python环境中了,使用inspect这个库,就可以让你舒舒服服地把懒癌坚持到底了。就像下面这两行代码:

import inspect
clsmembers=inspect.getmembers(sys.modules["PIL.ImageFilter"],inspect.isclass)

试着输出一下试试,就会发现每个元素都是一个tuple,每个tuple都包含了一个字符串和一个class,直接获取第二个作为class,大功告成!

for filter in clsmembers:
    try:
   	    count+=1
        im2=origin.filter(filter[1])
        im2.save(filepath+"\\finalresult\\{}.jpg".format(count),'jpeg')
    except:
        pass

代码是如此地奇幻而又充满魔力,简直就和爱情一毛一样!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值