我在文件夹中有一张图片。我手动将标签添加到图像中。我想加载图片并显示其标签。
为了获取图像元数据,我使用了教程http://johnbokma.com/java/obtaining-image-metadata.html
它显示xml,但此xml不包含标记。 xml示例:
Format name: javax_imageio_jpeg_image_1.0
<javax_imageio_jpeg_image_1.0>
<JPEGvariety/>
<markerSequence>
<unknown MarkerTag="225"/>
<unknown MarkerTag="225"/>
<dqt>
<dqtable elementPrecision="0" qtableId="0"/>
</dqt>
<dqt>
<dqtable elementPrecision="0" qtableId="1"/>
</dqt>
<sof process="0" samplePrecision="8" numLines="3000" samplesPerLine="4000" numFrameComponents="3">
<componentSpec componentId="1" HsamplingFactor="2" VsamplingFactor="1" QtableSelector="0"/>
<componentSpec componentId="2" HsamplingFactor="1" VsamplingFactor="1" QtableSelector="1"/>
<componentSpec componentId="3" HsamplingFactor="1" VsamplingFactor="1" QtableSelector="1"/>
</sof>
<dht>
<dhtable class="0" htableId="0"/>
</dht>
<dht>
<dhtable class="1" htableId="0"/>
</dht>
<dht>
<dhtable class="0" htableId="1"/>
</dht>
<dht>
<dhtable class="1" htableId="1"/>
</dht>
<sos numScanComponents="3" startSpectralSelection="0" endSpectralSelection="63" approxHigh="0" approxLow="0">
<scanComponentSpec componentSelector="1" dcHuffTable="0" acHuffTable="0"/>
<scanComponentSpec componentSelector="2" dcHuffTable="1" acHuffTable="1"/>
<scanComponentSpec componentSelector="3" dcHuffTable="1" acHuffTable="1"/>
</sos>
</markerSequence>
</javax_imageio_jpeg_image_1.0>
Format name: javax_imageio_1.0
<javax_imageio_1.0>
<Chroma>
<ColorSpaceType name="YCbCr"/>
<NumChannels value="3"/>
</Chroma>
<Compression>
<CompressionTypeName value="JPEG"/>
<Lossless value="FALSE"/>
<NumProgressiveScans value="1"/>
</Compression>
<Dimension>
<ImageOrientation value="normal"/>
</Dimension>
</javax_imageio_1.0>
答案 0 :(得分:2)
您使用什么软件为图片添加“标签”?我们假设它是Windows资源管理器。在这种情况下,'标签'可能会存储在这两个字段的图像中:
XMP:主题
XMP:LastKeywordXMP(特别是元素MicrosoftPhoto:LastKeywordXMP)
我不认为默认情况下使用ImageIO.getImageReaders()获取的读者的getImageMetadata方法将返回XMP数据。 (这是您引用的代码正在使用的内容)。
我建议找一个能够满足你需要的开源库或代码。周围似乎有很多,例如http://commons.apache.org/imaging/或http://java2s.com/Open-Source/Java/Image/metadata-extractor/com/drew/metadata/xmp/XmpReader.java.htm(注意:我没有尝试过使用此功能)。
如果一切都失败了,你可以使用优秀的ExifTool
这是一个命令行工具,但易于使用。例如,要提取标记: exiftool -XMP:Subject test.jpg