png 转 icns

最近写了一个离线播放器,兼容linux,windows,macOS,其他都好,但是mac上面的logo必须得是icns图标,什么鬼?
于是踏上了漫漫求知路,,一开始各种在在线转icns,但是编译打包的时候一律不通过,最后总结了着么一个自己生成icns图标的方法。

icns

icns 格式的图标,其实是macOS系统上采用的一种图标格式,也必须是这么一种格式,它支持各种尺寸的图标,其实就是把各种尺寸的图标打包到一起,然后根据场景选择合适的尺寸,
进行最优的展示方式,达到最佳的视觉效果。

png 转为 icns

首先,我们需要准备一张1024X1024或者像素更高的图片,命名为logo.png

创建一个临时目录,把转换的图片放在里面

mkdir test.iconset  // 这里后缀必须是 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    // 2x是专供Retina屏幕使用的
$ 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 512 512   pic.png --out tmp.iconset/icon_512x512@2x.png

这样执行完命令之后,test.iconset 目录下就有了以下十张图片
icns

我这里没有转换那么多,如果你觉得某个尺寸用不到的话,不执行命令就可以了,还有就是图片名称是固定的,否则现在最后一步会出错。

最后打包为icns

iconutil -c icns tmp.iconset -o lalala.icns

大功告成!以上仅供mac下参考,win没有测试,不做发言!

随手记下,有不当之处请留言!如果对小伙伴们有帮助的话,点赞啊,谢谢!

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐