这是一个创建于 1337 天前的主题,其中的信息可能已经有所发展或是发生改变。
BMP1 是 Photoshop 保存的,1920x1080,24bit,文件大小 6,220,856 字节。
BMP2 是 MSPaint 创建的,也是 1920x1080,24bit,但是文件大小是 6,220,854 字节,比 BMP1 少了 2 个字节。
用十六进制编辑器打开,发现 BMP1 和 BMP2 两个文件在 bfSize 和 biSizeImage 这两个地方不一样,填的是各自的数值(修正:BMP1 比 BMP2 的数值多 2 )。另外 BMP1 填写了 biXPelsPerMeter 和 biYPelsPerMeter ;而 BMP2 在这两个地方只填了 0 。最后 BMP1 比 BMP2 在文件末尾多了 2 个 0x00 。
把 BMP1 用 MSPaint 打开后,另存为 BMP3 (还是 1920x1080,24bit ),文件大小是 6,220,854 字节,和 BMP2 一样,比 BMP1 少了 2 个字节。
十六进制编辑器里,BMP3 的 bfSize 填了和 BMP2 一样的数值,但是 biSizeImage 填了 0 ; biXPelsPerMeter 和 biYPelsPerMeter 则没有填 0,数值和 BMP1 一样。
edit:我感觉 MSPaint 的字节数(包括文件总大小以及 bfSize 和 biSizeImage 两个数值)才是正确的,不过 Photoshop 多 2 个字节貌似也没影响。另外就是 PS 保存的 BMP 用 MSPaint 打开另存为后有点玄学……至于 biXPelsPerMeter 和 biYPelsPerMeter,应该是用来 DPI 缩放的?貌似 MSPaint 里也有 DPI 选项,不过好像没保存下来,只有打开 PS 的 BMP 再保存时会保留原先的 biXPelsPerMeter 和 biYPelsPerMeter 。