0%

一键生成AppIcon脚本(改进版)

一键生成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
可以参考另一篇文章

shell脚本一键生成icon