python手记(四):pillow(二) ImageChops类 视觉冲击(图片像素点运算)

人生不易且无趣,一起找点乐子吧。欢迎评论,和文章无关的也可以。

 

 

 

咳咳(清下嗓子,准备发话),自娱自乐型人格分裂患者。haaa。

前面我们简单看了pillow的基础Image类。现在我们成功的过度了,进入下个地图,刷怪,升级。反正都是一起学习嘛,我能力就这么点,我是不行了,您凑活吃。

您可能需要一张床,一面墙,一个冰箱。哈,扯回来,进入主题。

这次我们来看ImageChops类,chops,颌,颚,排;的意思。我也不晓得,为啥要起介个名字。英语水平差,领会不到其中的含义。但还好,怪丑不丑,不影响操作,该打还打。

(

后记:

)

为了便于演示,先铺垫一下。

首先是用到的图片素材:

第二张图不那么的和谐,无妨无妨,别问我为啥总是这几张图。因为......我重情。我把好看的图片都测试完了,你们玩的时候就没新意了,ok?(为自己的懒惰找借口完毕)

第二项,我写个main函数,然后调用一个个函数,来简单说明这个类吧。

if __name__ == '__main__':
    im1 = Image.open('1.jpg')
    im2 = Image.open('3.jpg')
    add(im2, im1)#这里调用函数
    im1.close()
    im2.close()

铺垫完成,先说下这个类的核心思想,这个类对图片进行了一些运算操作,嗯,怎么理解呢,我是这样认为的。我们知道图片由一个个像素点构成,每个像素点又都有像素值,我们一个个像素点去处理,修改他们的像素值,最后再保存处理完的图片,just so so。还有一点,此类方法的处理对象一般为im.mode是L或者RGB的图片,其他类型可能出错。

每个方法的后面我会写出具体的运算,当然这些,官网上也都有,大家可以自行去查看。

 

此类会对你的视觉造成极大的震撼,色盲,色弱,色狼,心脏病患者避让。(好像除了最后一种病人,其他病状都对视觉刺激免疫啊......)

 

ImageChops.add(im1,im2,scale=.0,offset=0),加运算

def add(im1,im2):
    im3 = ImageChops.add(im1,im2,scale=2.0,offset=0)#scale=1.0 offset=0
    im3.save('add.jpg')
    im3.close()

此方法有四个参数,前两个无需多谈,两个待处理Image对象,scale,等级,规模。offset,抵消偏移量。不扯这些名词了。

其实做的就是这个运算:

out = ((image1 + image2) / scale + offset)

这里的scale默认是1.0,offset是零。我分别用scale为1.0和2.0做了测试,看下效果:

 

(我觉得好看,你觉得呢?嗯,真香~~)

 

ImageChops.add_modulo(im1, im2)

还有个与之类似的加运算:

out = ((image1 + image2) % MAX),max是最大255。

def add_modulo(im1, im2):
    im3 = ImageChops.add_modulo(im1, im2)
    im3.save('add_modulo.jpg')
    im3.close()

就像开头说的这个类就是对像素值做了运算操作,其他的方法,我就直接写完代码,就展示结果了,必要说的地方再谈下。

看结果:

这个比较炫酷是吧。(蓝色描边,skr~~ skr~~~)

 

ImageChops.darker(im1, im2)

这个方法更酷,我是说名字。我起名为暗黑者,算了不胡扯了,这个方法原理上很简单,他是将两张图片一个一个像素点比较,留下那个像素深度大的点,最后产生一个新的图片。

def darker(im1, im2):#一个个像素点去比较  返回深度高的点
    im3 = ImageChops.darker(im1, im2)
    im3.save('darker.jpg')
    im3.close()

看结果:

可怕。

 

ImageChops.lighter(im1, im2)

相对应的,“光明者”!就是和darker相对而已,两两比较,留下深度值小的。

def lighter(im1, im2):
    im3 = ImageChops.lighter(im1, im2)
    im3.save('lighter.jpg')
    im3.close()

看结果:

淡淡芒果清香味。(这都是说了个啥!!!)

 

ImageChops.difference(im1, im2)

所做运算:

out = abs(image1 - image2)

两像素点的绝对差值。

def difference(im1, im2):
    im3 = ImageChops.difference(im1, im2)
    im3.save('difference.jpg')
    im3.close()

看结果:

恐怖悬疑吧这是。(烟火里的尘埃)

 

ImageChops.invert(im1)

invert,反。很好理解,其实就是取反了。(以下内容可能为胡扯,请将神兽“理性”召出,自行辨别真伪)我们知道,光视觉三原色(red,green,blue)和水彩染料的三原色(red,yellow,blue)是不同的。但是都有个补色的存在,比如最常知道的黑白等。

这里的取反,也能说成是颜色的取补吧,自行理解哈。(你的神兽说什么?别听他瞎BB?But I can.没人废话,没多复杂。【蹭热度】)

def invert(im1):
    im3 = ImageChops.invert(im1)
    im3.save('inert.jpg')
    im3.close()

看结果:

灵异事件!(好喜欢这张图~~~)

你知道熊猫黑白颠倒是啥样子吗?

差不多就下面这个样子:

 

emmmmmmm

 

ImageChops.logical_or(im1,im2)

逻辑或运算:

out = ((image1 or image2) % MAX)

我这里没办法做测试了,大家去找图片吧,我这几张图片不符合处理的类型

还有个与之对应的逻辑与运算。

ImageChops.logical_and(im1,im2),一样的。

 

ImageChops.multiply(im1,im2)

这个应该就直接看懂了,乘法:

out = image1 * image2 / MAX

def multiply(im1, im2):
    im3 = ImageChops.multiply(im1,im2)
    im3.save('multiply.jpg')
    im3.close()

看效果:

渐渐有了抵抗力。(还记得我说有抵抗力的人群都是什么病吗。【手动笑脸】)

 

ImageChops.offset(im, x, y)

def offset(im):
    im3 = ImageChops.offset(im, 300, 200)
    im3.save('offset.jpg')
    im3.close()

这个方法用于切割图片,然后再对角互换,啥意思?

看结果:

是不是秒懂,参数x,y就是切割点,也可以只写一个参数,如果y不给,默认与x相同。

 

ImageChops.screen(im1, im2)

所做运算:

out = MAX - ((MAX - image1) * (MAX - image2) / MAX)

def screen(im1, im2):
    im3 = ImageChops.screen(im1, im2)
    im3.save('screen.jpg')
    im3.close()

看效果:

(需要一副钛合金眼镜!!!)

 

ImageChops.subtract(im1, im2, scale=1.0, offset=0),减运算

所做运算:

out = ((image1 - image2) / scale + offset)

def subtract(im1, im2):
    im3 = ImageChops.subtract(im1, im2, scale=1.0, offset=0)
    im3.save('substract.jpg')
    im3.close()

和开头add一样,看效果:

惊悚再次袭来。(青青草原......还好不是帽子的颜色)

 

最后一个,和add一样的subtract。

 

ImageChops.subtract_modulo(im1, im2)

所做运算:

out = ((image1 - image2) % MAX)

def subtract_modulo(im1, im2):
    im3 = ImageChops.subtract_modulo(im1, im2)
    im3.save('subtract_modulo.jpg')
    im3.close()

看效果:

夜空!!!(极速五厘米吗?为什么我突然想到这个,这种画风,像早期电视卡的时候,划盘出现的画面。)

 

ok,介绍完了,其实我还蛮想试试把《星月夜》图片取补的,白色的夜空是什么样的。白云取补,黑色的云又是什么样的。(乌云啊,蠢~~~~)

 

好了,先到这里吧。我要鞠躬下台喽。

 

 

后记:

括号内的内容为第二次审看添加内容,旨在您阅读时引起极大舒适。That‘s all.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值