MvG*_*MvG 7 macos png file-format ios retina-display
看一下我在带有Retina显示屏和运行OS X 10.11的MacBook Pro上拍摄的屏幕截图,我发现它包含以下这些块:
IHDR, iCCP, pHYs, iTXt, iDOT, IDAT…, IEND
Run Code Online (Sandbox Code Playgroud)
所有这些都是2003规范的一部分,除了iDOT它是一个小的(28字节)块.根据块命名约定,其第二个字母是大写的事实应该表明它是具有公共规范的块.虽然我无法在任何地方找到它的规格.它没有在公共PNG块和关键字的注册表中列出,版本1.4.6,尽管它似乎是最新版本.
网上有很多网站提到这个块,包括Stack Overflow上的许多网站.大多数人都在描述错误信息
ImageIO: PNG invalid PNG file: iDOT doesn't point to valid IDAT chunk
Run Code Online (Sandbox Code Playgroud)
那些得到解决的人发现由于这个块而不是必然会出现某种图像损坏,或者应用了一些可能也删除了这个块的转换.
许多页面也提到了Retina显示器.这是我的猜测,并希望这个块以某种方式显示截屏时的显示密度.这对于自动缩放屏幕截图非常有用.
编辑:拍摄更多屏幕截图,我发现像素密度确实起到了一定的作用:以原始分辨率运行显示器我没有得到这样的块和截图时显示的图像尺寸.只有在更高的密度下才能获得块和PNG图像大小,它是显示的大小的整数倍.28字节的数据似乎代表7个小端32位整数.对我来说,这些都是(2, 0, h, 40, h, h, x)在那里2大概指示像素密度,h是明显的图像高度(即实际存储的一半)和x一些数字我不明白的.我不知道分数像素密度将如何进入这个游戏.
哪里可以找到细节,甚至可以找到这个块的规格?我是否必须联系Apple或注册表,或者是否有人可以提供更多详细信息?
正如 Hendrik 在评论中所写,https://www.hackerfactor.com/blog/index.php? /archives/895-Connecting-the-iDOTs.html 已对该块的用途进行了逆向工程。它包含编码图像数据中明确定义位置的偏移量。紧接着刷新之后,解压缩器状态被重置,并且也在 IDAT 块边界处,并且已知像素位置位于图像高度的一半处。
其目的是允许在多核处理器上并行解码图像数据。最近(2021 年 12 月 1 日)参与实施的人员在该页面上的评论中证实了这一目标。该评论虽然距离官方还很远,但却是迄今为止我在这个问题上能找到的最权威的评论。
| 归档时间: |
|
| 查看次数: |
615 次 |
| 最近记录: |