Electron-开发实践:制作icns图标
【省流】
封装了一个mac上将png转为icns的应用,
欢迎大家使用: https://electron-icns.com/
【前言】
将Electron应用打包为Mac应用包的时候,
这里以electron-packager打包为例,
默认打包运行后的应用图标是这样,

【icns】
按electron-packager的文档描述传入icon字段即可,
但是在mac端需要传入icns格式, https://electron.github.io/electron-packager/main/interfaces/electronpackager.options.html#icon

icns是苹果专用的一种格式,将各种尺寸的图片集合在一起,

【制作icns】
可以在mac上手动制作icns图标
1. 准备一个1024x1024的png透明底图标,例如pic.png放到一个文件夹下

2. 创建一个tmp.iconset文件夹,然后执行下列命令
sips -z 16 16 pic.png --out tmp.iconset/icon_16x16.png
sips -z 32 32 pic.png --out tmp.iconset/icon_16x16@2x.png
sips -z 32 32 pic.png --out tmp.iconset/icon_32x32.png
sips -z 64 64 pic.png --out tmp.iconset/icon_32x32@2x.png
sips -z 128 128 pic.png --out tmp.iconset/icon_128x128.png
sips -z 256 256 pic.png --out tmp.iconset/icon_128x128@2x.png
sips -z 256 256 pic.png --out tmp.iconset/icon_256x256.png
sips -z 512 512 pic.png --out tmp.iconset/icon_256x256@2x.png
sips -z 512 512 pic.png --out tmp.iconset/icon_512x512.png
sips -z 1024 1024 pic.png --out tmp.iconset/icon_512x512@2x.png
执行后就会得到各种尺寸的图片

3. 执行iconutil命令制作icns图标
iconutil -c icns tmp.iconset -o icon.icns
执行后就生成了一个icns图标

4. 将这个icns图标传入到electron-packager的icon处再次打包
可以看到mac下已经显示自己定制的图标了
【electron-icns】
上面的方法比较麻烦,封装了一个库,欢迎使用:https://code.insistime.com/#/electron-icns
通过npx使用
npx electron-icns /path/to/your/png/icon
通过npm全局使用
npm i -g electron-icns
electron-icns /path/to/your/png/icon
通过devDependencies使用
安装
npm i -D electron-icns
在package.json中添加命令
{
"scripts": {
"icns": "electron-icns /path/to/your/png/icon"
},
}
通过jsapi使用
// cjs
const { icns } = require("electron-icns");
// mjs
import { icns } from "electron-icns";
// icns
const icnsPath = await icns(pngPath);
效果

【图标很大】
制作好mac的icns图标后,
有时候会发现图标比其他应用的图标大一些,
例如这种效果:

原因其实很简单,
就是设计图标的时候没有留白,
随便找一个正常的图标打开查看,

这里大概看了下,
如果png的尺寸是1024x1024,
那么留白的尺寸是98px,
可以参考这个设计png,
然后转为icns就可以了。
【总结】
1. icns介绍
2. 手动通过sips和iconutil命令生成icns图标
3. 使用electron-icns库生成icns图标,https://code.insistime.com/#/electron-icns
相关推荐
Electron-开发实践:本地日志
【前言】 使用electron开发好本地应用后, 本地日志记录必不可少, 这样可以通过日志获取用户操作信息以及定位bug等, 本地日志与实时性的埋点上报稍微有不同, 本地日志量更大,信息更全,且不是所有信息都时候上报。 【与nodejs本地日志的异同】 electron写本地日志和nodejs写本地
Electron-开发实践:注册快捷键
【前言】 本文介绍一下electron应用中如何注册快捷键 【主进程】 主进程注册快捷键比较简单,需要注意的是在app ready后使用, 常见键盘映射: https://www.electronjs.org/docs/latest/api/accelerator 另外在推出app时需要将所有注册的
Electron-开发实践:几种更新方式
【前言】 Electron开发桌面APP后, 接着涉及一个问题就是如何更新后续的版本, 本文介绍几种更新的方式。 【Electron架构】 用Electron开发的桌面APP, 其实包含几个部分: 1\. Electron本身的环境 2\. 主进程,主进程中又分为Nodejs部分,和非Nodejs部
Electron-开发实践:定制Mac菜单
【前言】 前面几篇文章讲了从开发electron应用到mac打包, 相关文章: 一篇文章学会Electron Electron开发实践:本地数据库SQLite Electron开发实践:使用Monorepo管理Electron项目 Electron开发实践:Mac打包 Electron开发实践:注册
Electron-开发实践:包体积精简
【前言】 前面几篇文章讲了从开发electron应用到mac打包, 相关文章: 一篇文章学会Electron Electron开发实践:本地数据库SQLite Electron开发实践:使用Monorepo管理Electron项目 Electron开发实践:Mac打包 Electron开发实践:注册