一键生成AppIcon脚本(改进版)
看到了一篇文章是一个脚本用来生成AppIcon,这篇文章的作者用的是swift写的。然后我就把我之前写的一个自己用的shell脚本优化了下。
一键生成AppIcon的shell脚本.
使用方法
准备的东西:
- 一键生成AppIcon的脚本
- 分辨率高于1024x1024的图片(以为在iOS 11以后需要一张1024的图片用在App Store中)
首先下载脚本到本地,然后把脚本和图片放到一个文件夹下。然后确认脚本是否有执行权限。
没有权限的脚本,执行的时候会报错permission denied:
这时候要给脚本加上执行权限,命令是chmod +x ios_icon_shell_sips.sh
。这样就给脚本加上了执行权限。(这边有关文件权限的问题可以自己去查看有关linux文件权限的东西。)
下面的图就是有执行权限的脚本
在终端中执行这个脚本./ios_icon_shell_sips.sh
然后输入图片名:
可以看到输入的图片为test.png
,然后你可以看到这样土拍你的信息,然后输入你要生成哪里用的图标。可以选择iPhone、iPad、Apple Watch、macOS。目前暂时不支持AppleTV。(我这里的图片的分辨率是512x512。这样生成的1024x1024的图片可能会出现不清楚的情况,最好还是用大于1024的图片)
然后输入你想要生成的设备对应的编号。(可以多次输入,会多次生成)
生成结束后,输入q
可以退出。
这样生成的图标就按照固定的格式和命名生成在了当前的文件夹下。
脚本分析
首先说一下之前的那个脚本,那个脚本很简单,只需要在执行的时候接受一个图片参数就可以,只能满足基本要求,不够灵活。
技术难点:
- 键盘输入交互
- 生成图标
接受键盘输入:这里使用的是read来监听键盘输入。使用do while循环。具体的逻辑看下脚本内容会很清楚。
遇到的问题是监听键盘的时候,当什么都不输入的情况下直接回车。会出现错误。错误的原因是逻辑运算的问题。因为我这里要比较输入的参数所以这里会报错$aNum = 1
。(这里的aNum就是你输入的设备参数。如果你这时候没有输入直接回车会出现 = 1
的比较所以会报错。使用"$aNum" = 1
加上双引号就不会出现这样的情况。因为不会出现一个空值,只会是一个空字符串。)具体的东西可以去参考shell的语法。
生成图标:这里使用的是macOS系统中自带的图片处理命令sips
详细的使用说明可以参考 man sips
。
这里只用到了改变大小和获取图片mete信息的功能。
改变大小: sips -z 512 512 $Pic --out Mac512@1x.png
获取图片信息:sips -g all $Pic
图片处理框架还要其他可以选择。macOS下比较好用的就是这个sips
。可以通过这个命令完成很多东西。比如一些图片的批处理操作。当然也可以安装其他图片处理库。这里我还在linux上用过ImageMagick
可以参考另一篇文章