今天是清明节,警笛长鸣,万众默哀。送别英雄,生活继续。
大部分的app配图,今天都是灰色。这种图片的转换在python里非常容易实现。一行代码搞定。
下面是DE8UG上次说个故事:再见VB。你好,精彩纷呈的编程世界!用的彩色图:
我们用这一行代码运行一下:
Image.open('green-mix.jpg').convert("L").save('gray.jpg')
就直接变成了灰色。
代码解释
这句代码用到了pillow这个图片处理库,所以运行前,需要pip install pillow,刚才说是一行代码,其实有点夸张,用之前是需要导入的:
from PIL import Image
如果严格要求,真的一行搞定,其实也很简单:
from PIL import Image;Image.open('green-mix.jpg').convert("L").save('gray.jpg')
只需要用个分号把两句代码连为一行即可。
可能你已经发现了,上面的文件名是写好的字符串,我们还可以把代码修改的更灵活一下,比如运行一个gray.py的代码,直接传给这个代码一个图片名称,然后自动生成一个灰度图,比如我直接给原图片追加‘-gray’后缀。
那么,我们可以这样:新建一个gray.py文件,写入如下代码,然后保存:
import sys;from PIL import Image;Image.open(sys.argv[1]).convert("L").save(sys.argv[1]+'-gray.jpg')
然后打开控制台,进入图片目录,直接运行:
python gray.py green-mix.jpg
注意:green-mix.jpg是我这个目录里的文件名,你用的时候换为自己的
运行成功,当前目录出现两个文件:
green-mix.jpg 和 green-mix.jpg-gray.jpg, 当然,我这里没有处理文件名后缀,你可以自己用字符串处理。
图片转换原理
这里最关键的图片转换代码为:convert("L"),含义是将彩色的图片转为灰色图。用到了ITU-R 601-2 Luma转换:
L = R * 299/1000 + G * 587/1000 + B * 114/1000
这里的代码内部是把图片上每一个像素的颜色值RGB,都用公式进行了计算,映射到了灰色区域。也就出现了我们看见的灰色图效果。
相关阅读:
Python权威学习资料-官方文档-DE8UG解读-01-甜点
Python权威学习资料-官方文档-DE8UG解读-02-解释器
Python权威学习资料-官方文档-DE8UG解读-03-Python 的非正式介绍
Python权威学习资料-官方文档-DE8UG解读-04a-流程关键词
Python权威学习资料-官方文档-DE8UG解读-04b-函数
Python权威学习资料-官方文档-DE8UG解读-05-数据结构与循环
Python权威学习资料-官方文档-DE8UG解读-06-模块与调用
Python权威学习资料-官方文档-DE8UG解读-07-输入输出文件和字符串
Python权威学习资料-官方文档-DE8UG解读-08-错误和异常
Python权威学习资料-官方文档-DE8UG解读-09-类与对象
想查看更多?
请点击原文⬇️