簡介
這兩天更新完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