8

我想找到图像的“拍摄日期”,而不是“修改日期”或“创建日期”。虽然我在 stackoverflow 上找到了一些链接,但没有一个可以检索到它。图像格式为:tiff 和 RAW。

使用javax.imageio,我编写了以下程序,但它什么也没打印。这意味着没有reader可用的

        File file = new File( fileName );
        ImageInputStream iis = ImageIO.createImageInputStream(file);
        Iterator<ImageReader> readers = ImageIO.getImageReaders(iis);            
        if (readers.hasNext()) {
            // pick the first available ImageReader
            ImageReader reader = readers.next();
            // attach source to the reader
            reader.setInput(iis, true);
            // read metadata of first image
            IIOMetadata metadata = reader.getImageMetadata(0);
            String[] names = metadata.getMetadataFormatNames();
            int length = names.length;
            for (int i = 0; i < length; i++) {
                System.out.println( "Format name: " + names[ i ] );
                displayMetadata(metadata.getAsTree(names[i]));
            }
        }

使用核心 java 库,是否有一种方法可以访问“拍摄日期”而不是“创建日期”或“修改日期”。进一步的data taken信息是可用的,因为我可以从操作系统中的图像属性中看到

编辑:事实证明,readers迭代器与它无关。iee size 0. 它只发生在 tiff 和 raw 图像上。适用于 jpeg

4

1 回答 1

10

我找不到使用 java 核心库的任何解决方案。找到了一个名为metadata-extractor的库来完成这项工作。

更多信息可以在这里找到。

于 2012-11-26T06:52:16.767 回答