批处理抠图(透明图)

有张大的图片(png)格式,是张比较大的图,需要把内容,提取出来(周围是透明,即alpha值为0)

可以达到下图的效果,且自动输出所有扣除图片坐上角的坐标到文本中(./out/results.txt')

批处理抠图(透明图)_第1张图片

附上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 !


 

 

你可能感兴趣的:(python,批处理,抠图)