最近正在写一个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 文件被生成。
分解说明
- 首先规定了 输入图标的路径 和输出文件夹的名字 两个参数。
- sips(scriptable image processing system)是一个可以自动生成不同大小图片的命令。在脚本里,我们规定了想要生成的不同大小的图片。如果将脚本的最后两行去掉(删除iconutil 和 rm 开头的两行),再运行脚本,你会在终端里面看到一个叫icon.iconset的文件夹。里面包含的数个你想要生成的png图片。
- 之后通过 iconutil 命令 我们把刚才生成的 icon.iconset 的文件夹 转换成 .icns 文件。
- 最后 .iconset 文件夹已经没有用了 可以删除掉(最后一行)
结语
Cool, 原来生成macOS 的 .icns 文件可以这么简单。以后需要再用的时候 直接运行脚本就行了。happy coding 👩🏻💻|👨🏻💻!