有张大的图片(png)格式,是张比较大的图,需要把内容,提取出来(周围是透明,即alpha值为0)
可以达到下图的效果,且自动输出所有扣除图片坐上角的坐标到文本中(./out/results.txt')
附上python脚本源码:
import sys import os import Image def parsepng_2(filename): print 'filename is :' , filename R, G, B ,A = 0, 1, 2,3 im =Image.open(filename) imageW = im.size[0] imageH = im.size[1] print im.format , im.size , im.mode myleft=10000 myright=0 mytop=10000 mybottom=0 mywidth =0 myheigth = 0 i = 0 for y in range(0, imageH): for x in range(0, imageW): offset = y*imageW + x xy = (x, y) rgba = im.getpixel(xy) #print rgba # (255, 240, 0, 255) if rgba[R] == 255 and rgba[G] == 255 \ and rgba[B] == 255 and rgba[A] == 0: continue else: if x <= myleft : myleft =x if x >= myright : myright =x if y <= mytop : mytop = y if y >= mybottom : mybottom = y print myleft , myright , mytop , mybottom mywidth = myright - myleft +1 myheigth = mybottom - mytop+1 print mywidth , myheigth outim=Image.new("RGBA", (mywidth,myheigth)) for y in range(0, myheigth): for x in range(0, mywidth): xy = (x, y) xyorigin = (x+myleft, y+mytop) rgbaorigin = im.getpixel(xyorigin) outim.putpixel(xy,rgbaorigin) outim.save('./out/%s'%(filename),) os.system('echo %d , %d , // %s >> ./out/results.txt'%(myleft,mytop,filename)) os.system('mkdir ./out') os.system('rm -rf ./out/*') pngfilelist = [] files = os.walk('./') for pngfile in files: for item in pngfile: for i in item: if 'png' in i: pngfilelist.append(i) os.system('echo "int imgIndex[ %d ] = {" >> ./out/results.txt'%(len(pngfilelist))) for pngfile in pngfilelist: parsepng_2('%s'%(pngfile)) os.system('echo "}; " >> ./out/results.txt')
简单的使用说明:
0
先确保python已经安装
1
安装python 图形处理库
$ tar xvfz Imaging-1.1.7.tar.gz
$ cd Imaging-1.1.7
$ python setup.py install
2 *.png 图片放在此目录下
3 ./suguang.py
或者 python ./suguang.py
不能执行的话先:
chmod 777 ./suguang.py
4
图片生成在 ./out 目录下
./out/results.txt 保存的是坐标的信息
完整工程放在:
http://git.oschina.net/xmeter/pick-picture
good luck !