python 使用 PIL 库读取图片的像素值
2015-02-20 01:59:11| 分类: Python | 标签:python
想做一个横板的过关游戏,没有图片,就用 photoshop 从别人的游戏截屏中抽了一些图片
出来,发现一共有 74 张图片,每张图片都在一个图层中,听说 photoshop 有图层批量导出
的功能,很开心。但发现一个问题,就是图片批量导出的时候,会把透明的像素也导出来
了。这个第一张图片会有很多空着的透明像素,好像这个没有办法解决。
废话少说,我们先批量导出所有的图片,方法如下。
不知道 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" )
评论0