简介
这两天更新完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 or Pillow
笔者亲测,也许是笔者太菜,试了各种方法安装PIL总是出错,最后还是用了Pillow,效果一样的。
怎么使用脚本
在Windows的命令行或者Mac的终端,输入:
python tool.py [action] [filename] [platform]
action:icon 或者 screenshot
filename:图标文件名,截屏不需要文件名,自动遍历
platform:ios 或者 android
举一些例子:
生成iOS的图标:python tool.py icon icon.jpg ios
生成安卓的图标:python tool.py icon icon.jpg android
生成iOS的截屏:python tool.py screenshot ios
生成安卓的截屏:python tool.py screenshot android
注意:
生成安卓圆角图标需要一张PNG来裁剪,尺寸512x512,70圆角,GitHub中已经附带。
生成截屏时会自动遍历所有JPG和PNG文件,自动识别横竖屏
结语
如果你觉得有用,欢迎在GitHub中Star一下,也欢迎改进,代码简单易懂加了注释。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。
更多Python为iOS10生成图标和截屏相关文章请关注PHP中文网!

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

Python3.6环境下加载Pickle文件报错:ModuleNotFoundError:Nomodulenamed...

如何解决jieba分词在景区评论分析中的问题?当我们在进行景区评论分析时,往往会使用jieba分词工具来处理文�...

如何使用正则表达式匹配到第一个闭合标签就停止?在处理HTML或其他标记语言时,常常需要使用正则表达式来�...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript开发工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

Atom编辑器mac版下载
最流行的的开源编辑器