通过PIL库提供的API接口可以很方便的处理图像,功能十分强大;
最近有一个替换png背景色的需求,替换背景色的同时又不能够覆盖原来的文字,之前利用perl 的CD 模块一直没能够正确处理,最终用PIL 成功的解决了问题
思路就是读取一个文件中的像素点,把背景色对应的像素点全部替换成新的颜色就可以了
代码如下:
from PIL import Image im = Image.open('hsa00250.png') box = (653,784,699,801) img = im.crop(box) x,y = img.size img = img.convert("RGBA") datas = img.getdata() newData = [] for item in datas: if item[0] == 191 and item[1] == 255 and item[2] == 191: newData.append((255, 0, 0, 255)) else: newData.append(item) img.putdata(newData) im.paste(img, box) im.save('hsa00250.new.png')
原来的图是这个样子的
将特定的点替换之后就变成了下面这样
通过PIL库,直接从像素层面操作文件,很强大!
后续还可以做一个本地版的脚本,对KEGG的图片进行颜色标记,这样就不需要每次都用KEGG网站的API 了。