帧工坊 FrameCraft 帧工坊 FrameCraft

一套 UI 图标要导出几个尺寸:@2x/@3x、安卓五档、iOS、ICO

同一张图标,在不同设备上要的是不同像素:逻辑大小一样,屏幕密度不同。只给一档,结果是低清屏浪费内存、高清屏发虚。这篇把常见平台的档位列成对照表,直接抄;再讲清楚三件容易做错的事:源图该选多大、逐级减半到底有没有用、ICO 怎么打包才对。

帧工坊教程 · 尺寸规范 · 约 6 分钟

一、为什么要出多档

移动设备按逻辑单位排版(iOS 的 point、Android 的 dp),实际渲染像素 = 逻辑值 × 倍率。48dp 的图标在 mdpi 上是 48px,在 xxxhdpi 上就是 192px。如果只给 48px,高清屏上系统会把它放大——放大就是糊。反过来只给 192px,低清屏白白多占 16 倍内存。所以要么出多档,要么就别嫌麻烦。

二、对照表(直接抄)

Android:密度桶五档

密度桶倍率48dp 图标实际像素目录
mdpi(基准)1.048 × 48drawable-mdpi/
hdpi1.572 × 72drawable-hdpi/
xhdpi2.096 × 96drawable-xhdpi/
xxhdpi3.0144 × 144drawable-xxhdpi/
xxxhdpi4.0192 × 192drawable-xxxhdpi/

另有 ldpi 0.75(36px),现在基本不用了。启动器图标另有一套更大的尺寸,按各自倍率换算即可。

iOS:三档 + App Store

用途@1x@2x@3x
App 图标(主)60120180
通知204060
设置 / Spotlight295887
Spotlight 大4080120
App Store 提交——1024(单独一张)

Web / PWA / 桌面端

用途尺寸说明
favicon(ICO)16 / 32 / 48一个 .ico 文件里内嵌多个尺寸
apple-touch-icon180iOS 添加到主屏
PWA 图标192 / 512manifest 里声明,512 用于安装屏
OG 分享图1200 × 630社交平台分享卡片

小游戏与纹理链

三、源图该选多大

原则:从最大的一档开始,只往下缩

如果你要出到 @3x(180)和 xxxhdpi(192),源图就不能小于 192;有 512 更好。放大是凭空造像素,怎么缩都救不回来。能拿矢量(SVG/AI 源文件)就先导出一张足够大的位图再往下缩。

四、逐级减半到底有没有用

老经验说「512 缩到 64 要一级一级减半,别一步到位」,这个说法在现代浏览器里只对一半。我们实测过(源图 512 → 目标 40):

所以要逐级减半的只有一种情况:你选了低质量档又要缩很多倍。其余情况直接一步缩就行。另外两个容易忽略的点:像素图放大必须用最近邻(用双线性插补会把 6 色调色板插出几百种颜色,像素味全没),缩小后要检查透明边缘(缩小时半透明像素会被平均,脏边有时反而在缩小后更明显)。

自己写缩放逻辑时最容易踩的坑

用 getImageData 读过源 canvas 之后,浏览器可能把它换到另一套后端,之后再测画质会拿到假数据。度量之前先克隆一份干净的副本,别拿被读过的那张去测。

五、ICO 打包要注意什么

六、目录与命名

按平台分目录(drawable-xxhdpi/、Assets.xcassets),文件名用小写 + 下划线、只描述内容不描述尺寸(尺寸由目录承担):icon_potion_red.png 而不是 图标_红色药水_144x144.png。带状态的用后缀:btn_ok_normal / btn_ok_pressed / btn_ok_disabled。

常见问题

只出一档 @3x,让系统自己缩,行不行?

能用,但不建议:低端机上白白占 9 倍内存,而且系统缩放的算法你控制不了,细图标容易糊或丢细节。出全档的成本现在几乎为零(一次批量导出就完事)。

Android 要出圆形图标和自适应图标怎么办?

自适应图标(Adaptive Icon)要分前景层 + 背景层两层各出一套,且前景内容要留出安全区(内容集中在中间 66% 左右,否则会被厂商的遮罩裁掉)。圆形图标只是遮罩形态之一,不用单独出图。

尺寸必须能被 4 整除吗?

不是硬性规定,但是好习惯:纹理压缩(如 ETC / PVRTC 的块对齐)和 mipmap 逐级除 2 时,能被 4 整除的尺寸不会在中途出现小数。九切素材和图标都建议这么做。

导出后要不要全部转 WebP?

看内容:色块多、渐变少的 UI 图转 WebP 常常能省 70%–90%,且 quality=1.0 走的是无损通道,对纯色/规则内容特别友好;照片和复杂渐变收益有限。先批量压一遍看每张的节省比例和差异度,再决定哪些转。

上一篇AI 生成的 UI 素材怎么用起来:从一张 PNG 到能进引擎 相关九宫格(9-slice)切图怎么做

相关工具