Maison  >  Article  >  développement back-end  >  Python génère des icônes et des captures d'écran pour iOS10

Python génère des icônes et des captures d'écran pour iOS10

高洛峰
高洛峰original
2017-02-24 15:55:251147parcourir

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 !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn