1.软件准备
安装python PIL库:
pip install pillow
2.功能介绍
2.1 获取图片的尺寸信息
右键图片查看属性,可以获取图片大小,如500x500
图片的坐标是正常二元坐标系沿x轴翻转的,原点在左上角,向下y轴正方形,向右x轴正方向:
2.2 RGB色域介绍
RGB由red,green,blue组成,对应xyz坐标一般分为256个等级,如下图,正红色可设定为
(255,0,0)
在RGB基础上衍生出了RGBA的概念,增加了一个α颜色空间,代表了像素的透明度。0代表完全透明
3.代码示例
需是将一张500x500的图片白色的部分变透明
首先我们看看原图:
代码如下:
用RGBA格式,纯白色是坐标是(255,255,255)
from PIL import Image
def changecolor(src, dst):
img = Image.open(src)
img = img.convert("RGBA")
datas = img.getdata()
newData = list()
for data in datas:
if data[0] > 230 and data[1] > 230 and data[2] > 230:
newData.append((255, 255, 255, 0))
else:
newData.append(data)
img.putdata(newData)
img.save(dst, "PNG")
changecolor(r"C:\Users\qiz\Desktop\New folder\ori_new0.png",r"C:\Users\qiz\Desktop\New folder\ori_new0.png")
处理好的图片打开就是透明的啦,
那么如何指定区呢?比如我在上图的基础上染一个50x50的绿色方块:
我们添加一段代码,将代码改成如下:
from PIL import Image
def changecolor(src, dst):
img = Image.open(src)
img = img.convert("RGBA")
datas = img.getdata()
newData = list()
for data in datas:
if data[0] > 230 and data[1] > 230 and data[2] > 230:
newData.append((255, 255, 255, 0))
else:
newData.append(data)
im = img.load()
img.putdata(newData)
img.save(dst, "PNG")
for x in range(50):
for y in range(50):
im[x,y]=(0,255,0)
img.save(dst, "PNG")
changecolor(r"C:\Users\qiz\Desktop\New folder\ori_new0.png",r"C:\Users\qiz\Desktop\New folder\ori_new0.png")
运行得到一个想要的图片了: