Icns 何方神圣,
当我们解包Mac OS X 中的 APP 时,以系统自带的词典APP为例,我们看到扩展名为 icns 的 文件(图 1)。
(图 1)
那么这个icns 是何方神圣,以下让我们一探究竟。
苹果图标图像格式即icns是苹果用于MacOS X 应用程序的图标格式。它支持的图标大小有16 × 16, 32 × 32, 48 × 48, 128 ×128, 256 × 256, 512 × 512, and 1024 × 1024像素, 这些图标可以带有1到8位的alpha通道和多个图像状态(例如:打开和不安比文件夹).操作系统根据实际的屏幕情况能够对这些固定大小的图标进行缩放,来显示任何中间尺寸。
Icns其实是一个图标的容器,我们预览词典的图标文件 Dictionary.icns,
我们可以看到,标号为1到10,尺寸从大到小的10个图标文件,
此处我们截了3张图。
文件结构:
文件是由8位的头部和数量不等的图标文件数据组成。
头部
长度偏移 | 长度 | 描述 |
0 | 4 | 文件类型标识,必须是"icns" (0x69, 0x63, 0x6e, 0x73) |
4 | 4 | 文件长度,字节表示, msb first |
我们使用UItraEdit打开文件:
4至7字节为文件大小:图中为00 18 34 8D,我们转为十进制并与文件大小对比
头部信息完全一致。
图标数据
长度偏移 | 长度 | 描述 |
0 | 4 | 图标类型,参考 OSType表格. |
4 | 4 | 数据长度,字节表示(包括类型和长度), msb first |
8 | 不定 | 图标数据 |
图标类型
OSType | 长度(字节) | 尺寸(像素) | 支持的OS版本 | Description |
ICON | 128 | 32 | 1.0 | 32×32 1-bit mono icon |
ICN# | 256 | 32 | 6.0 | 32×32 1-bit mono icon with 1-bit mask |
icm# | 48 | 16 | 6.0 | 16×12 1 bit mono icon with 1-bit mask |
icm4 | 96 | 16 | 7.0 | 16×12 4 bit icon |
icm8 | 192 | 16 | 7.0 | 16×12 8 bit icon |
ics# | 64 (32 img + 32 mask) | 16 | 6.0 | 16×16 1-bit mask |
ics4 | 128 | 16 | 7.0 | 16×16 4-bit icon |
ics8 | 256 | 16 | 7.0 | 16x16 8 bit icon |
is32 | varies (768) | 16 | 8.5 | 16×16 24-bit icon |
s8mk | 256 | 16 | 8.5 | 16x16 8-bit mask |
icl4 | 512 | 32 | 7.0 | 32×32 4-bit icon |
icl8 | 1,024 | 32 | 7.0 | 32×32 8-bit icon |
il32 | varies (3,072) | 32 | 8.5 | 32x32 24-bit icon |
l8mk | 1,024 | 32 | 8.5 | 32×32 8-bit mask |
ich# | 288 | 48 | 8.5 | 48×48 1-bit mask |
ich4 | 1,152 | 48 | 8.5 | 48×48 4-bit icon |
ich8 | 2,304 | 48 | 8.5 | 48×48 8-bit icon |
ih32 | varies (6,912) | 48 | 8.5 | 48×48 24-bit icon |
h8mk | 2,304 | 48 | 8.5 | 48×48 8-bit mask |
it32 | varies (49,152) | 128 | 10.0 | 128×128 24-bit icon |
t8mk | 16,384 | 128 | 10.0 | 128×128 8-bit mask |
icp4 | varies | 16 | 10.7 | 16x16 icon in JPEG 2000 orPNG format |
icp5 | varies | 32 | 10.7 | 32x32 icon in JPEG 2000 orPNG format |
icp6 | varies | 64 | 10.7 | 64x64 icon in JPEG 2000 orPNG format |
ic07 | varies | 128 | 10.7 | 128x128 icon in JPEG 2000 orPNG format |
ic08 | varies | 256 | 10.5 | 256×256 icon in JPEG 2000 orPNG format |
ic09 | varies | 512 | 10.5 | 512×512 icon in JPEG 2000 orPNG format |
ic10 | varies | 1024 | 10.7 | 1024×1024 in 10.7 (or 512x512@2x "retina" in 10.8) icon inJPEG 2000 orPNG format |
ic11 | varies | 32 | 10.8 | 16x16@2x "retina" icon in JPEG 2000 orPNG format |
ic12 | varies | 64 | 10.8 | 32x32@2x "retina" icon in JPEG 2000 orPNG format |
ic13 | varies | 256 | 10.8 | 128x128@2x "retina" icon in JPEG 2000 orPNG format |
ic14 | varies | 512 | 10.8 | 256x256@2x "retina" icon in JPEG 2000 orPNG format |
长度列中出现在括号中的值是未压缩时的数据长度.