gpt4 book ai didi

android - 以 png 和 jpg 格式存储信息

转载 作者:行者123 更新时间:2023-11-30 03:11:33 25 4
gpt4 key购买 nike

我找到了很多资源,但没有任何资源对我所寻找的东西有很大帮助。我试图充分理解 .png 和 .jpg 文件格式,以便能够修改和/或读取文件中的 exif 或其他元数据,或者在可能的情况下创建我自己的元数据。

我想在 android 应用程序的上下文中执行此操作,这样我们就可以保留它,但它确实不是唯一的。我试图弄清楚如何使用一个简单的输入流字节数组来做到这一点,然后从那里开始。

当 Android 从流中创建 bmp 图像时,它本身必须至少在某个时候提取 RGB 像素信息,我查看了 BitMapFactory 源代码以尝试理解它,但在深入研究 Native 后我迷路了文件。

根据我的研究,我认为 bmp 正在丢失文件中的任何 exif/元数据。所以我想我想按字节数组分解输入流并删除元数据。在 .pngs 中,我知道没有“标准”,但基于此 page您似乎可以存储一些元数据组织。

话虽如此,我不介意抛开 exif/png 标准并尝试以某种标准化方式存储我自己的信息,但我需要更多地了解图像阅读器如何将文件识别为jpg、png 等。然后确定像素信息所在的位置。

所以我想我的第一个问题是,以前有没有人做过类似的事情以便他们可以将我归档?如果没有,有没有人知道任何可能对教育目的有好处的图书馆,以弄清楚如何定位和提取这些数据?

或者更基本地说,使用字节数组之类的东西以编程方式查找元数据和/或 exif 标准甚至 rgb 数据的好方法是什么?

最佳答案

在你的问题中有很多事情要解决,但首先我应该澄清一下,当你说“Android 本身必须至少提取 RGB 像素信息”时,你指的是解压缩行为,这在 JPEG 的情况下很复杂,即使对于 PNG 也是不平凡的。我认为通读有关 JPEG 的维基百科对您非常有用。和 PNG,然后再尝试更进一步(尤其是有关标题、语法、文件结构等的部分)。

话虽如此,您的想法是正确的。以字节数组/流的形式读取图像的标题、进行一些更改并替换旧文件应该不会太困难。 PNG 文件可以通过前 8 个字节来识别,并且应该有类似的方法来识别 JPEG - 我想不起来了。

要修改 PNG 元数据,您必须了解“ block ”- 类型/名称、顺序、格式、CRC 等。libpng 网站有一些很好的资源,这里是一般性的 PNG info ,以及 chunk specifications .如果您更改任何内容,请确保不要忘记重新计算 CRC。

JPEG 使用“标记”分割文件,“标记”长度为两个字节,始终以 FF 开头。 Exif 只是一个普通的 JPEG 文件,具有更具体的元数据结构,这似乎是一个合理的介绍:Exit/TIFF

可能有适用于 Android/Java 的库可以方便地为您处理此问题,但我自己从未使用过。快速谷歌搜索出现this ,如果您不想花时间自己编写解析器,我相信还有很多其他选择。

关于android - 以 png 和 jpg 格式存储信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20864632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com