如何访问原始图像数据

How to access the raw image data

提问人:James A Cubeta 提问时间:1/29/2017 最后编辑:James A Cubeta 更新时间:2/1/2017 访问量:1103

问:

我正在使用 metadata-extractor 编写一个 Java 应用程序来组织图像并查找重复项。API 很棒,但有些东西我无法弄清楚。

假设我有两个JPG图像。这些图像在视觉上是完全相同的(即像素方面相同)。但是,文件中封装的元数据中的某些内容可能有所不同。

如果我计算每个完整文件的 MD5 哈希值,我将得到两个不同的哈希值。但是,我只想计算图像/像素数据的哈希值,这将为两个文件产生相同的哈希值。

那么 - 有没有办法使用元数据提取器从 JPG 中提取原始图像/像素数据,以便我可以计算我的哈希值?

另外,Javadoc 是否可用于此 API?我似乎找不到它。

java 元数据提取器

评论

0赞 marshal craft 1/29/2017
你为什么要使用 md5 哈希,简单地比较文件中的数据不是更快吗?此外,您可以看到 jpeg 编码并从其各自的块中获取图像数据。
0赞 marshal craft 1/29/2017
同样在我看来,我认为如果您想提取位图(x,y 到 argb),不使用元数据提取器会更容易。将 jpeg 打开为二进制文件并解析图像数据块的过程似乎比制定其 api 的过程更短。这不是基于事实,而是基于简要查看他们的 api 的意见。
0赞 James A Cubeta 1/29/2017
是的,只是比较数据会更简单。由于我不熟悉如何挑选 JPG,我不确定如何获得代表图像数据的“相应块”。
0赞 marshal craft 1/29/2017
有 jpeg 编码规范。有标头块和其他块类型。您需要包含图像数据的那个(如果它未压缩)。元数据提取器应该将您从所有这些细节中抽象出来并节省您的时间。但是元数据提取器也可以处理各种格式,这使得 api 可能比 jpeg 编码本身更复杂。
0赞 marshal craft 1/29/2017
我认为您需要一个从 jpeg 二进制文件到位图 xml 文件的适配器。

答:

2赞 Drew Noakes 2/1/2017 #1

您可以使用库的类来实现此目的。它允许您提取包含图像数据的 JPEG 段并忽略元数据段。JpegSegmentReader

我在另一个答案中讨论了这种技术,提问者表示他们使用这种方法取得了成功。

这实际上会为库提供一个很好的示例应用程序。如果你想出一些东西并想分享,请这样做。