简介
这两天更新完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