2

我正在尝试从 PNG 图像格式中提取元数据。我正在使用这个库?http://code.google.com/p/metadata-extractor/

尽管它声称支持 PNG 格式,File format is not supported但当我使用 PNG 图像尝试它时会出现错误。从源代码(在方法中readMetadata,它看起来也不支持 PNG 格式:http ://code.google.com/p/metadata-extractor/source/browse/Source/com/drew/imaging/ImageMetadataReader.java ?r=1aae00f3fe64388cd14401b2593b580677980884

我也尝试过这段代码,但它也没有提取 PNG 上的元数据。

顺便说一句,我正在使用 imagemagick 在 PNG 上添加元数据,如下所示:

mogrify -comment "Test" Demo/myimage.png

有没有人将此库用于 PNG 格式,或者是否有其他方法可以从 PNG 图像中提取元数据?

4

1 回答 1

4

你可以试试PNGJ(我是开发者)

参见例如here一个转储所有块的示例。如果你想读取一个特定的文本块(回想一下,在 PNG 中,每个文本元数据都有一个键和一个值),你可以写

 pngr.getMetadata().getTxtForKey("mykey")

一个有用的小 Windows 程序可以窥视 PNG 块结构是TweakPNG

更新:如果您想检查所有文本块(请记住,三种类型存在一些差异,但是......)

PngReader pngr = FileHelper.createPngReader(new File(file));
pngr.readSkippingAllRows();
for (PngChunk c : pngr.getChunksList().getChunks()) {
      if (!ChunkHelper.isText(c))   continue;
      PngChunkTextVar ct = (PngChunkTextVar) c;
      String key = ct.getKey();
      String val = ct.getVal();
      // ... 
}

还要记住,允许具有重复键的文本块。

于 2013-01-25T16:27:09.673 回答