python PIL 库处理文件
通过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 了。
python PIL 库处理文件的更多相关文章
- Python PIL 库的应用
PIL (Python Image Library) 库是Python 语言的一个第三方库,PIL库支持图像存储.显示和处理,能够处理几乎所有格式的图片. 一.PIL库简介 1. PIL库主要有2个方 ...
- Python PIL库学习笔记
1.PIL简介 Python Imaging Library(缩写为PIL)(在新的版本中被称为Pillow)是Python编程语言的开源库,它增加了对打开,操作和保存许多不同图像文件格式的支持.它适 ...
- 使用Python PIL库中的Image.thumbnail函数裁剪图片
今天,是我来到博客园的第五天,发现自己还没有头像,想着上传ubuntu系统中我很喜欢的一个背景图片来当头像,但是因为图片过大,上传失败了.那么,我们如何使用python中强大的PIL库来进行图片裁剪呢 ...
- python PIL库的使用
)PIL可以做很多和图像处理相关的事情: 图像归档(Image Archives).PIL非常适合于图像归档以及图像的批处理任务.你可以使用PIL创建缩略图,转换图像格式,打印图像等等. 图像展示(I ...
- Python PIL库之Image注解(API)
http://blog.csdn.net/xiezhiyong3621/article/details/8499543 class Image Methods defined here: __geta ...
- python常用库
本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿.未经许可,禁止转载!英文出处:vinta.欢迎加入翻译组. Awesome Python ,这又是一个 Awesome XXX 系列的资源整理,由 ...
- PIL不能关闭文件的解决方案
今天写了一个能指定图片尺寸,以及比例 来搜索分类图片的Python脚本.为了读取多个格式的文件的头,采用了Python PIL库. im = PIL.Image.open(imPath) if im的 ...
- Python常用库大全
环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. v ...
- python的库小全
环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. v ...
随机推荐
- RUBY Error: Please update your PATH to include build tools or download the DevKit
出错的原因是安装XXXXX的时候,需要build tools,但系统中没有.出错信息中同时也给出了解决的法案: 1. 到 http://rubyinstaller.org/downloads/ 去下载 ...
- 编辑控件的警告提示是:This text field does not specify an inputType or a hint
没有设置editText的inputtype属性,比如<android:inputtype="textpassword"> http://binuu.blog.51ct ...
- 鼠标移至div内部其他层时,触发mouseout
话说有一个DIV元素,其内部有一个IMG元素和SPAN元素,不用理会这两个内部元素怎么布局,这不是我要讨论的重点. 为了实现一些特殊的效果,我需要利用TD的onmouseover和onmouseout ...
- linux下查看doc在线帮助文件
常看到某个linux下的工具,有带有doc结尾的文件,但是新手不知道如何查看. 我一番查找,终于知道了... 比如:ipython这个软件,在ubuntu里面,有ipython-doc的一个包. 安装 ...
- Javascript玩转继承(二)
对象伪装来实现继承.在这里先来说一下这种方式的优缺点 这种方式是比较容易理解的,在子类中调用父类的构造函数.另外,这种方法最大的一个优点就是说构造继承可以实现多继承,复习下这个代码: function ...
- Test for Required Behavior, Not Incidental Behavior
Test for Required Behavior, Not Incidental Behavior Kevlin Henney A COMMON PITFALL IN TESTING is to ...
- 山寨一个std::bind\boost::bind
这里是最初始的版本,参考https://github.com/cplusplus-study/fork_stl/blob/master/include/bind.hpp 提供了最简洁的实现方式. 第一 ...
- C++11 long long使用及输出
相比于C++98标准,C++11整型的最大改变就是多了 long long.分为两种:long long 和unsigned long long.在C++11中,标准要求long long 整型可以在 ...
- cocos2d-x JsonBox 读写
#include "JsonBox.h" std::string path = "test.json”; //注意引入路径 path = cocos2d::CCFileU ...
- 二 、在 JDK 6 and JDK 7中 substring() 方法
在JDK6 和JDK 7 里面substring(int beginIndex, int endIndex)的方法是不同的.知道这种区别会帮助你更好用它们.为了简单期间,下面用substring() ...