简介
这两天更新完Xcode8之后发现Xcode对图标的要求又有了变化,之前用的一个小应用“IconKit”还没赶上节奏,已经不能满足Xcode8的要求了。
于是就想起来用Python自己做个脚本来生成图标。
其实这个脚本很早就写了,现在为了适应iOS10,就修改完善下,并且放到了 GitHub 。
可以看看效果图:
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
#encoding=utf-8
#by 不灭的小灯灯
#create date 2016/5/22
#update 2016/9/21
#support iOS 10
#site www.winterfeel.com
import os
import sys
from PIL import Image
iosSizes = [ '20@1x' , '20@2x' , '20@3x' , '29@1x' , '29@2x' , '29@3x' , '40@1x' , '40@2x' , '40@3x' , '60@2x' , '60@3x' , '60@3x' , '76@1x' , '76@2x' , '167@1x' ]
androidSizes = [ 32 , 48 , 72 , 96 , 144 , 192 ]
androidNames = [ 'ldpi' , 'mdpi' , 'hdpi' , 'xhdpi' , 'xxhdpi' , 'xxxhdpi' ]
sizesiOS = [( 640 , 960 ),( 640 , 1136 ),( 750 , 1334 ),( 1242 , 2208 ),( 1536 , 2048 ),( 2048 , 2732 )]
foldersiOS = [ 'iPhone4s' , 'iPhone5' , 'iPhone6' , 'iPhone6plus' , 'iPad' , 'iPadLarge' ]
sizesAndroid = [( 480 , 800 ),( 720 , 1280 ),( 1080 , 1920 )]
foldersAndroid = [ '480x800' , '720x1280' , '1080x1920' ]
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()
icon.putalpha(a)
if not os.path.isdir( 'androidIcon' ):
os.mkdir( 'androidIcon' )
index = 0
for size in androidSizes:
im = icon.resize((size,size),Image.BILINEAR)
im.save( 'androidIcon/icon-' + androidNames[index] + '.png' )
index = index + 1
else :
if not os.path.isdir( 'iosIcon' ):
os.mkdir( 'iosIcon' )
for size in iosSizes:
originalSize = int (size.split( '@' )[ 0 ]) #原始尺寸
multiply = int (size.split( '@' )[ 1 ][ 0 : 1 ]) #倍数
im = icon.resize((originalSize * multiply,originalSize * multiply),Image.BILINEAR)
im.save( 'iosIcon/icon' + size + '.png' )
print 'Congratulations!It\'s all done!'
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 = = 'screenshot' :
platform = sys.argv[ 2 ] #platform
if platform = = 'ios' :
walk_dir( './' , 'ios' )
elif platform = = 'android' :
walk_dir( './' , 'android' )
else :
print 'Hey,Platform can only be "ios" or "android" !'
elif 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" !'
|
脚本环境要求
Python 2.7
PIL or Pillow
笔者亲测,也许是笔者太菜,试了各种方法安装PIL总是出错,最后还是用了Pillow,效果一样的。
怎么使用脚本
在Windows的命令行或者Mac的终端,输入:
python tool.py [action] [filename] [platform]
action:icon 或者 screenshot
filename:图标文件名,截屏不需要文件名,自动遍历
platform:ios 或者 android
举一些例子:
生成iOS的图标:python tool.py icon icon.jpg ios
生成安卓的图标:python tool.py icon icon.jpg android
生成iOS的截屏:python tool.py screenshot ios
生成安卓的截屏:python tool.py screenshot android
注意注意
生成安卓圆角图标需要一张PNG来裁剪,尺寸512x512,70圆角,GitHub中已经附带。
生成截屏时会自动遍历所有JPG和PNG文件,自动识别横竖屏
结语
如果你觉得有用,欢迎在GitHub中Star一下,也欢迎改进,代码简单易懂加了注释。
以上所述是小编给大家介绍的教你用Python脚本快速为iOS10生成图标和截屏的全部叙述,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://www.tuicool.com/articles/FzERfqu