<PY><PIL>图像的透明和尺寸处理--为wp8.1生成图标

来源:互联网 发布:战地1 知乎 编辑:程序博客网 时间:2024/06/05 04:56

环境:Python 2.7.5 x86   及对应版本的PIL(Python Image Library)

现有:类似下图的图标

 

要求:为满足windows phone8.1的图标要求,生成多种尺寸的图标,图标有且仅有两种颜色,白色(255,255,255,255)和透明(0,0,0,0)


代码如下


"makeico.py:make ico for windows phone 8.1"from get_png import getpngfrom resize import resizefrom trans_parent import transparentresize(transparent(getpng()))
上面是一个入口


"get_png.py:get png directory for use"def getpng():    import os,fnmatch    cwd=os.getcwd()    dirlist=os.listdir(cwd)    pnglist=[]    for file in dirlist:        if fnmatch.fnmatch(file,'*.png'):            pnglist.append(file)        else:            pass    return pnglist[0]   #return the first pngif __name__=='__main__':    getpng()

从当前目录下获取第一个png格式的图片路径


"trans_parent.py:make a 1000*1000 transparented ico"import Imagefrom get_png import getpngdef transparent(infile):    #open png,covert it into 'RGBA mode',resize it,get data then make a datalist    datalist=list(Image.open(infile,'r').convert('RGBA').resize((1000,1000),Image.BILINEAR).getdata())    #color(0,0,0,0) is transparent    newim=Image.new("RGBA",(1000,1000),(0,0,0,0))    for x in range(1000):        for y in range(1000):            #color(255,255,255,255) is 'white'            if datalist[1000*y+x]==(255,255,255,255):                newim.putpixel((x,y),(255,255,255,255))            else:                pass    newim.save("1000_1000.png")    return "1000_1000.png"if __name__=="__main__":    transparent("source.png")

把这个图片转才1000*1000像素的透明底白色图标

"resize.py:resize into sizes"import Imagedef resize(a):    "resize into sizes"    img=Image.open(a)    img.resize((170,170),Image.BILINEAR).save("170_170.png")    img.resize((360,360),Image.BILINEAR).save("360_360.png")    img.resize((744,360),Image.BILINEAR).save("744_360.png")    img.resize((106,106),Image.BILINEAR).save("106_106.png")    img.resize((120,120),Image.BILINEAR).save("120_120.png")    img.resize((58,58),Image.BILINEAR).save("58_58.png")    img.resize((1152,1920),Image.BILINEAR).save("1152_1920.png")if __name__=='__main__':    resize("source.png")

生成多种尺寸在当前目录


完成 



0 0
原创粉丝点击