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" !'