Heim  >  Artikel  >  Backend-Entwicklung  >  Python generiert Symbole und Screenshots für iOS10

Python generiert Symbole und Screenshots für iOS10

高洛峰
高洛峰Original
2017-02-24 15:55:251093Durchsuche

Einführung

Nachdem ich Xcode8 in den letzten zwei Tagen aktualisiert habe, habe ich festgestellt, dass sich die Anforderungen von Xcode an Symbole erneut geändert haben, und eine kleine Anwendung „IconKit“, die ich zuvor verwendet habe, hat sich geändert Der Rhythmus kann die Anforderungen von Xcode8 nicht mehr erfüllen.

Also dachte ich darüber nach, Python zu verwenden, um ein Skript zum Generieren von Symbolen zu erstellen.

Tatsächlich wurde dieses Skript vor langer Zeit geschrieben und nun zur Anpassung an iOS10 geändert und verbessert und auf GitHub gestellt.

Sie können die Darstellung sehen:

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" !'

Anforderungen an die Skriptumgebung

Python 2.7

PIL oder Pillow

Der Autor hat es persönlich getestet, vielleicht auch ich Zu naiv, ich habe verschiedene Methoden zur Installation von PIL ausprobiert und bekam immer Fehler. Schließlich habe ich Pillow verwendet und der Effekt war der gleiche.

So verwenden Sie das Skript

Geben Sie in der Windows-Befehlszeile oder im Mac-Terminal Folgendes ein:

python tool.py [Aktion] [ Dateiname] [Plattform]
Aktion: Symbol oder Screenshot
Dateiname: Symboldateiname, Screenshot erfordert keinen Dateinamen, wechselt automatisch
Plattform: iOS oder Android

Nennen Sie einige Beispiele:

Generieren Sie ein iOS-Symbol: python tool.py icon icon.jpg ios

Generieren Sie ein Android-Symbol: python tool.py icon icon.jpg android

iOS-Screenshots generieren: Python-Tool.py-Screenshot für iOS

Android-Screenshots generieren: Python-Tool.py-Screenshot für Android

Hinweis:

Um ein abgerundetes Android-Symbol zu generieren, müssen Sie ein PNG mit einer Größe von 512 x 512 und einer abgerundeten Ecke von 70 mm zuschneiden. Es ist bereits in GitHub enthalten.

Beim Erstellen von Screenshots werden automatisch alle JPG- und PNG-Dateien durchsucht und horizontale und vertikale Bildschirme automatisch identifiziert

Fazit

Wenn Sie Finden Sie es nützlich, willkommen. Markieren Sie es auf GitHub. Der Code ist einfach und mit Kommentaren leicht zu verstehen.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er zum Lernen aller beiträgt. Ich hoffe auch, dass jeder die PHP-Chinesisch-Website unterstützt.

Weitere Artikel zum Thema Python-Generierung von Symbolen und Screenshots für iOS10 finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn