python图标工具


import os
import sys
import shutil
from PIL import Image

iosSizes = ['29','76@2x','40@2x','40@3x','50@2x','83.5@2x',
'60@3x','29@2x','20-ipad','76','1024','72','72@2x','29@3x',
'60@2x','29@2x-ipad','20@3x','57','20@2x-ipad','40','50','20@2x','57@2x','29-ipad']
androidSizes = [36,48,72,96,144,192]
androidNames = ['ldpi','mdpi','hdpi','xhdpi','xxhdpi','xxxhdpi']

path = "/Users/kalo/Desktop/ICON_FACTORY/"


def processIcon(filename,platform):
    icon = Image.open(filename).convert("RGBA")
    if icon.size[0] != icon.size[1]:
        print 'Icon file must be a rectangle!'
        return
    if platform == 'android':
        #安卓圆角
        mask = Image.open('mask.png')
        r,g,b,a = mask.split()
    
        a = a.point(lambda i: i>0 and 178)
        icon.putalpha(a)

        if not os.path.isdir(path+'androidIcon'):
            os.mkdir(path+'androidIcon')

        for name in androidNames:
            
            if not os.path.isdir(path+'androidIcon/mipmap-'+name):
                os.mkdir(path+'androidIcon/mipmap-'+name)
        index = 0
        for size in androidSizes:
            im = icon.resize((size,size),Image.BILINEAR)
            im.save(path+'androidIcon/mipmap-'+androidNames[index]+'/ic_launcher.png')
            index = index + 1

        im = icon.resize((512,512),Image.BILINEAR)
        im.save(path+'androidIcon/ic_launcher.png')
    else:
        if not os.path.isdir(path+'iosIcon'):
            os.mkdir(path+'iosIcon')

        if not os.path.isdir(path+'iosIcon/AppIcon.appiconset'):
            os.mkdir(path+'iosIcon/AppIcon.appiconset')

        mycopyfile(path+'Contents.json', path+'iosIcon/AppIcon.appiconset/Contents.json')


        for size in iosSizes:
            if '@' in size:

                if '.' in size:
                    # '83.5@2x',
                    originalSize = 167
                    multiply = 1
                else: 
                    originalSize = int(size.split('@')[0])#原始尺寸
                    multiply = int(size.split('@')[1][0:1])#倍数
                
                
                # print originalSize*multiply
                im = icon.resize((originalSize*multiply,originalSize*multiply),Image.BILINEAR)
                im.save(path+'iosIcon/AppIcon.appiconset/icon-'+size+'.png')
            elif '-' in size:
                
                originalSize = int(size.split('-')[0])
                im = icon.resize((originalSize,originalSize),Image.BILINEAR)
                im.save(path+'iosIcon/AppIcon.appiconset/icon-'+size+'.png')
            else:
                
                originalSize = int(size)
                im = icon.resize((originalSize,originalSize),Image.BILINEAR)
                im.save(path+'iosIcon/AppIcon.appiconset/icon-'+size+'.png')

        im = icon.resize((512,512),Image.BILINEAR)
        im.save(path+'iosIcon/iTunesArtwork.png')
        im = icon.resize((1024,1024),Image.BILINEAR)
        im.save(path+'iosIcon/iTunesArtwork@2x.png')

    print 'Congratulations!It\'s all done!'


def mycopyfile(srcfile,dstfile):
    if not os.path.isfile(srcfile):
        print "%s not exist!"%(srcfile)
    else:
        fpath,fname=os.path.split(dstfile)    #分离文件名和路径
        if not os.path.exists(fpath):
            os.makedirs(fpath)                #创建路径
        shutil.copyfile(srcfile,dstfile)      #复制文件
        print "copy %s -> %s"%( srcfile,dstfile)

# def walk_dir(dir,platform):
#     files = os.listdir(dir)
#     for name in files:
#         if name.split('.')[-1] == 'jpg' or name.split('.')[-1] == 'png':#处理jpg和png
#             produceImage(name,platform)
#     print 'Congratulations!It\'s all done!'

# def produceImage(filename,platform):
#     print 'Processing:' + filename
#     img = Image.open(filename)
#     index = 0
#     sizes = sizesiOS
#     folders = foldersiOS
#     if platform == 'android':#默认ios,如果是安卓
#         sizes = sizesAndroid
#         folders = foldersAndroid
#     for size in sizes:
#         if not os.path.isdir(folders[index]):
#             os.mkdir(folders[index])
#         if img.size[0] > img.size[1]:#如果是横屏,交换坐标
#             im = img.resize((size[1],size[0]),Image.BILINEAR)
#             im.save(folders[index]+'/'+filename)
#         else:
#             im = img.resize(size,Image.BILINEAR)
#             im.save(folders[index]+'/'+filename)
#         index = index + 1

action = sys.argv[1]#action:icon or screenshot
if action == 'icon':
    filename = sys.argv[2]#image filename
    platform = sys.argv[3]#platform
    if not os.path.exists(filename):
        print 'Hey,File Not Found!'
    else:
        if platform == 'ios':
            processIcon(filename,'ios')
        elif platform == 'android':
            processIcon(filename,'android')
        else:
            print 'Hey,Platform can only be "ios" or "android" !'
else:
    print 'Hey,action can only be "icon" or "screenshot" !'
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值