使用sip和iconutil自动创建electron macOS图标。

452 阅读1分钟

最近正在写一个Electron的项目。对于macOS来说,需要创建一个 .icns 文件。写项目的时候发现了一个可以快速生成macOS图标的方法。这里和大家分享一个仅需要大小至少为1024x1024.png图片,就可以自动生成其它大小的的png,并通过这些png图标生成一个 .icns 文件的 bash 脚本。

注意📢:

macOS 对于图标的大小有严格的要求。使用iconutil 来转换的图片必须以 icon_ 开头。

准备工作:

一个大小为 1024x1024 像素的 png 格式图片。

一步到位

创建一个 icns_generator.sh,然后复制粘贴下面的脚本 :

#!/bin/bash
input_filepath='1024x1024.png'
output_iconset_name='icon.iconset'
mkdir $output_iconset_name

sips -z 16 16     $input_filepath --out "${output_iconset_name}/icon_16x16.png"
sips -z 32 32     $input_filepath --out "${output_iconset_name}/icon_16x16@2x.png"
sips -z 32 32     $input_filepath --out "${output_iconset_name}/icon_32x32.png"
sips -z 64 64     $input_filepath --out "${output_iconset_name}/icon_32x32@2x.png"
sips -z 64 64     $input_filepath --out "${output_iconset_name}/icon_64x64.png"
sips -z 128 128   $input_filepath --out "${output_iconset_name}/icon_64x64@2x.png"
sips -z 256 256   $input_filepath --out "${output_iconset_name}/icon_128x128@2x.png"
sips - 256 256    $input_filepath --out "${output_iconset_name}/icon_256x256.png"
sips -z 512 512   $input_filepath --out "${output_iconset_name}/icon_256x256@2x.png"
sips -z 512 512   $input_filepath --out "${output_iconset_name}/icon_512x512.png"
sips -z 1024 1024 $input_filepath --out "${output_iconset_name}/icon_512x512@2x.png"

iconutil -c icns $output_iconset_name
rm -R $output_iconset_name

在终端里面 运行 bash icns_generator.sh, 你可以看到 一个icns 文件被生成。

分解说明

  1. 首先规定了 输入图标的路径 和输出文件夹的名字 两个参数。
  2. sips(scriptable image processing system)是一个可以自动生成不同大小图片的命令。在脚本里,我们规定了想要生成的不同大小的图片。如果将脚本的最后两行去掉(删除iconutil 和 rm 开头的两行),再运行脚本,你会在终端里面看到一个叫icon.iconset的文件夹。里面包含的数个你想要生成的png图片。
  3. 之后通过 iconutil 命令 我们把刚才生成的 icon.iconset 的文件夹 转换成 .icns 文件。
  4. 最后 .iconset 文件夹已经没有用了 可以删除掉(最后一行)

结语

Cool, 原来生成macOS 的 .icns 文件可以这么简单。以后需要再用的时候 直接运行脚本就行了。happy coding 👩🏻‍💻|👨🏻‍💻!