>백엔드 개발 >파이썬 튜토리얼 >Python은 iOS10용 아이콘과 스크린샷을 생성합니다.

Python은 iOS10용 아이콘과 스크린샷을 생성합니다.

高洛峰
高洛峰원래의
2017-02-24 15:55:251162검색

소개

지난 이틀 동안 Xcode8을 업데이트한 후 Xcode의 아이콘 요구 사항이 다시 변경되었으며 이전에 사용했던 작은 응용 프로그램 "IconKit"이 따라잡을 수 없습니다. 리듬이 더 이상 Xcode8의 요구 사항을 충족할 수 없습니다.

그래서 Python을 사용하여 아이콘을 생성하는 스크립트를 만들어볼까 하는 생각이 들었습니다.

사실 이 스크립트는 오래전에 작성한 것인데 지금은 iOS10에 적응하기 위해 수정하고 개선해서 GitHub에 올렸습니다.

렌더링을 볼 수 있습니다:

1.png

코드:

#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 또는 Pillow

작가가 직접 테스트했는데, 어쩌면 제가 너무 좋은지도 모르겠습니다. PIL을 설치하기 위해 다양한 방법을 시도했지만 항상 오류가 발생했습니다. 마침내 Pillow를 사용했는데 효과는 동일했습니다.

스크립트 사용 방법

Windows 명령줄 또는 Mac 터미널에서 다음을 입력하세요.

python tool.py [action] [ 파일 이름] [플랫폼]
작업: 아이콘 또는 스크린샷
파일 이름: 아이콘 파일 이름, 스크린샷에는 파일 이름이 필요하지 않으며 자동으로 순회
플랫폼: ios 또는 android

몇 가지 예를 들어보세요.

iOS 아이콘 생성: python tool.py icon icon.jpg ios

Android 아이콘 생성: python tool.py icon icon.jpg android

iOS 스크린샷 생성: python tool.py 스크린샷 ios

Android 스크린샷 생성: python tool.py 스크린샷 android

참고:

Android 둥근 아이콘을 생성하려면 크기가 512x512이고 둥근 모서리가 70mm인 잘릴 PNG가 필요합니다. 이 파일은 이미 GitHub에 포함되어 있습니다.

스크린샷 생성 시 자동으로 모든 JPG 및 PNG 파일을 순회하며 가로 및 세로 화면을 자동으로 식별합니다

결론

유용하다고 생각되면 GitHub에서 Star it을 사용해 보세요. 코드가 간단하고 설명이 이해하기 쉽습니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.

iOS10용 Python 생성 아이콘 및 스크린샷과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.