python使用PIL库读取图片的像素值

来源:互联网 发布:mysql分类查询 编辑:程序博客网 时间:2024/05/17 22:44
新年好,今天是大年初一。
想做一个横板的过关游戏,没有图片,就用photoshop从别人的游戏截屏中抽了一些图片出来,发现一共有74张图片,每张图片都在一个图层中,听说photoshop有图层批量导出的功能,很开心。但发现一个问题,就是图片批量导出的时候,会把透明的像素也导出来了。这个第一张图片会有很多空着的透明像素,好像这个没有办法解决。
废话少说,我们先批量导出所有的图片,方法如下。
python使用PIL库读取图片的像素值 - ♂苹果 - 眼睛想旅行
 这里我导出到了桌面上。看一下图片,有一大片空白像素。
python使用PIL库读取图片的像素值 - ♂苹果 - 眼睛想旅行
不知道photoshop有没有能不能批量导出没有透明像素的图片。反正我没有找到,我只能用最最老土的方法了。就是用python来对导出的图片分析。删除我们不要的透明像素。下边是使用python读取图片像素值的方法。
用image模块,可以用getpixel获得像素值,给你个例子吧。得到的像素值应该是(R,G,B,A),大家读读看每个图片是什么。
#!/usr/bin/env python
import Image
import sys
im = Image.open(sys.argv[1])
width = im.size[0]
height = im.size[1]
print "/* width:%d */"%(width)
print "/* height:%d */"%(height)
count = 0
for h in range(0, height):
for w in range(0, width):
pixel = im.getpixel((w, h))
for i in range(0,3):
count = (count+1)%16
if (count == 0):
print "0x%02x,/n"%(pixel[i]),
else:
print "0x%02x,"%(pixel[i]),
 这样我们就可以遍历整个图片像素了,在其中找出我们图片像素不是透用的区域,然后使用下边的方法把图片截取出来并保存:
box = (100,100,500,500)#设置要拷贝的区域,这是我们找到的有像素的区域。
#将im表示的图片对象拷贝到region中,大小为(400*400)像素。这个region可以用来后续的操作(region其实就是一个Image对象),box变量是一个四元组(左,上,右,下)。
region = im.crop(box)
region.save( "fileout.png" )
下边是一个不错的教程。 
http://onlypython.group.iteye.com/group/wiki/1371-python-graphics-library-pil-python-image-library-introduction
另一个教程:
http://www.blogjava.net/Skynet/archive/2009/11/28/303986.html
一个使用pil制作验证码的方法:
http://ju.outofmemory.cn/entry/34825

加一个PIL模块的安装方法:
pip install Image
用这个方法安装的PIL在import时要使用
form PIL import Image的方法调用Image图片模块.

欢迎热爱技术的人加入我的QQ群:213571088
原创粉丝点击