我正在尝试从 PNG 图像格式中提取元数据。我正在使用这个库?http://code.google.com/p/metadata-extractor/ 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 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 图像中提取元数据吗?
你可以试试PNGJ https://github.com/leonbloy/pngj(我是开发商)
参见例如这里example https://github.com/leonbloy/pngj/blob/master/src/test/java/ar/com/hjg/pngj/samples/SampleShowChunks.java转储所有块。
如果你想读取特定的文本块(回想一下,在 PNG 中,每个文本元数据都有一个键和一个值),你可以写
pngr.getMetadata().getTxtForKey("mykey")
一个有用的 Windows 小程序可以查看 PNG 块结构:TweakPNG http://entropymine.com/jason/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();
// ...
}
还要记住,允许使用具有重复键的文本块。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)