jpeg 标头的字节数组

Posted

技术标签:

【中文标题】jpeg 标头的字节数组【英文标题】:Byte array of a jpeg header 【发布时间】:2013-12-19 10:28:15 【问题描述】:

出于某种特殊原因,我想从已加载到字节数组中的 jpeg 中提取标头信息。

为了找到标头的长度,我一直在比较不同 jpeg 的字节数。

共同点是每张图片的第 1 623 个字节具有相同的字节值。

这些 jpeg 具有相同的高度、宽度、分辨率,但具有不同的图像/场景。

真的这么简单吗?假设标题不包含每个图像的字节长度,第一个 623 是否是所有标题之间的公共标题?

【问题讨论】:

en.wikipedia.org/wiki/JPEG#Syntax_and_structure 更多喜欢:jpeg.org/public/jfif.pdf 谢谢你们俩。我想知道,在我的场景中,我是否可以简单地忽略第一个 623 字节和最后 2 个字节并说“其余的是像素信息”。我以前看过这些标题描述。我想我会运行一个测试,看看我是否可以在服务器上重建图像,只需添加'common' 623 header 和'common' 2 bytes tail。 您的特定方法可能恰好适用于您的输入数据,但这绝不是通用的方法... ;-) JFIF 支持仅表格文件(仅“标题”),以及无表文件(仅限“数据”)。这可能是您想要使用的,但您需要一个支持此功能的编码器/解码器。 您好,感谢您的反馈。我很确定这不会是一种通用方法。它特定于我的应用程序,它具有受控的 jpeg 提要。感谢您的信息:) 【参考方案1】:

没有“JPEG”标题(除了图像标记的开头)。 JPEG是一个序列标记,其中一些有以下数据块。

各种 JPEG 文件格式为识别文件格式的 APPn 标记定义格式(例如 JFIF、XFIF)。

您的 623 个匹配字节很可能是由同一个编码器编写的同一个注释标记。所以,不,你不能忽略 623 字节并可靠地确定文件的内容。

我的猜测是它会出现在特定于特定文件格式的 APPn 标记或帧开始标记中。

【讨论】:

【参考方案2】:

(代表问题作者发布答案)

从我的测试中,如果我从第一个图像(长度为 623 字节)和最后 2 个字节 255、217 中提取标题,然后块复制介于两者之间的字节(623 到字节数组的长度 -2)和在图像处理工作的服务器端附加提取的(第一个)标题和尾部。

【讨论】:

以上是关于jpeg 标头的字节数组的主要内容,如果未能解决你的问题,请参考以下文章

在 onPictureTaken 之后旋转 JPEG 的字节数组

将字节数组转换/显示为 bmp/jpeg 图像

如何从 jpeg 或 png 格式的字节数组在画布上绘制图像

将BuffereImage转换为JPEG格式的字节数组

如何通过使用 ByteBuffer 查看标头偏移量来制作字节数组?

从 YUV 字节数组中获取像素矩阵