소개
지난 이틀 동안 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 중국어 웹사이트를 주목하세요!