我拍摄了一张在运行OS X 10.11的MacBook Pro Retina显示器上截屏的截图,发现其中包含以下块:
IHDR, iCCP, pHYs, iTXt, iDOT, IDAT…, IEND
以下所有内容都是2003规范的一部分,除了
iDOT
,它只是一个小的(28字节)块。根据块命名约定,它的第二个字母大写应该表示它是具有公共规范的块。但我还没有找到它的规范。它也没有列在公共PNG块和关键字注册表,版本1.4.6中,尽管那似乎是最新版本。网络上有很多网站提到这个块,包括许多Stack Overflow上的网站。大多数描述的是类似于错误消息的内容。
ImageIO: PNG invalid PNG file: iDOT doesn't point to valid IDAT chunk
那些得到解决的问题发现了某种图像损坏,不一定是由于这个数据块,或者应用了某种转换,可能也删除了这个数据块。
许多页面还提到了Retina显示屏。我猜测并希望这个数据块以某种方式指示了截屏时生效的显示密度。这对于自动缩放截图将非常有用。
编辑:拍摄更多截图后,我发现像素密度似乎确实起了作用:在原生分辨率下运行时,我没有这样的数据块,并且在拍摄时显示的图像尺寸。只有在更高的密度下才会出现此数据块和PNG图像大小是显示尺寸的整数倍。这28字节的数据似乎表示7个小端32位整数。对我来说,它们是(2, 0, h, 40, h, h, x)
,其中2
可能表示像素密度,h
是表面上的图像高度(即存储的一半),而x
是我完全不理解的某个数字。我不知道如何将分数像素密度纳入这个游戏中。
我该在哪里找到这个块的详细信息甚至规格?我需要联系苹果公司或注册机构吗,还是这里有人可以提供更多细节?