Introduction
Après avoir mis à jour Xcode8 au cours des deux derniers jours, j'ai constaté que les exigences de Xcode pour les icônes ont de nouveau changé et qu'une petite application "IconKit" que j'ai utilisée auparavant a pas rattrapé. Le rythme ne peut plus répondre aux exigences de Xcode8.
J'ai donc pensé à utiliser Python pour créer un script permettant de générer des icônes.
En fait, ce script a été écrit il y a longtemps. Désormais afin de s'adapter à iOS10, il a été modifié et amélioré et mis sur GitHub.
Vous pouvez voir le rendu :
1.png
Code :
#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" !'
Exigences relatives à l'environnement de script
Python 2.7
PIL ou Pillow
L'auteur l'a personnellement testé, peut-être que je le suis trop naïf, j'ai essayé différentes méthodes pour installer PIL et j'ai toujours eu des erreurs. Finalement, j'ai utilisé Pillow, et l'effet était le même.
Comment utiliser le script
Dans la ligne de commande Windows ou le terminal Mac, saisissez :
python tool.py [action] [ nom de fichier] [plateforme]
action : icône ou capture d'écran
nom de fichier : nom de fichier d'icône, la capture d'écran ne nécessite pas de nom de fichier, traverse automatiquement
plateforme : ios ou android
Donnez quelques exemples :
Générer une icône iOS : python tool.py icon icon.jpg ios
Générer une icône Android : python tool.py icon icon.jpg android
Générer des captures d'écran iOS : python tool.py capture d'écran ios
Générer des captures d'écran Android : python tool.py capture d'écran android
Remarque :
Pour générer une icône Android arrondie, vous avez besoin d'un PNG à recadrer, d'une taille de 512x512 et d'un coin arrondi de 70 mm. Il est déjà inclus dans GitHub.
Lors de la génération de captures d'écran, il parcourra automatiquement tous les fichiers JPG et PNG et identifiera automatiquement les écrans horizontaux et verticaux
Conclusion
Si vous trouvez-le utile, bienvenue. Star-le dans GitHub. Les améliorations sont également les bienvenues. Le code est simple et facile à comprendre avec des commentaires.
Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. J'espère également que tout le monde soutiendra le site Web PHP chinois.
Pour plus d'articles liés à la génération d'icônes et de captures d'écran Python pour iOS10, veuillez faire attention au site Web PHP chinois !