通过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 了。

最新文章

  1. 【Android】不使用WebView来执行Javascript脚本(Rhino)
  2. android小游戏 飞机躲子弹
  3. Charles使用详情
  4. Cheatsheet: 2014 09.01 ~ 09.30
  5. 解决数据库datatime数据在DataGridView里不显示秒的解决
  6. react中的坑
  7. 从 IT 中断中学到的最佳监控实践
  8. NET设计模式-单例模式(Singleton Pattern)
  9. poj2318 水题(二分+叉积)
  10. 【Web】十步教你搭建完整免费的个人网站(花生壳+XAMPP+WordPress)
  11. easyUI的简单了解
  12. 关系网络理论︱细讲中介中心性(Betweeness Centrality)
  13. Net 4.5 WebSocket 在 Windows 7, Windows 8 and Server 2012上的比较
  14. Testing - 软件测试知识梳理 - 探索性测试
  15. hdu 5919 Sequence II (可持久化线段树)
  16. Arch Linux中禁用UTC解决双系统时间问题
  17. (弃) Keystone CLI_可选命令详解
  18. binlog之五:mysqlbinlog解析binlog乱码问题解密
  19. 【C++】数组-整数从大到小排序
  20. My First

热门文章

  1. Oracle学习笔记之五sp1,PL/SQL之BULK COLLECT
  2. paip.索引的种类以及实现attilax 总结
  3. OS memory
  4. JVM调优总结 + jstat 分析
  5. mac下两种很常见的button的xib设置
  6. 在windows环境下编译hadoop
  7. 小程序之自定义组件 ---- 列表goodsList
  8. mysql出现The total number of locks exceeds the lock table size解决办法
  9. SSH高级应用(端口转发)
  10. JS中onclick事件传参