0

我有一个包含 2 个方向属性的图像。当我尝试读取图像的元数据时,它总是给出第二个方向属性的值。

有没有办法读取第一个方向值?

我附上了2个文件。1是图像,2是文本文件形式的图像元数据。

  1. 图片 在此处输入图像描述

  2. 元数据文件在此处输入图像描述

我正在使用如下所示的代码:

public int getImage(String name,String outputFileName) throws ImageProcessingException, IOException {

        Metadata metadata;
        try {
            File f = new File(name);
            metadata = ImageMetadataReader.readMetadata(f);

            for (Directory directory : metadata.getDirectories()) {
                for (Tag tag : directory.getTags()) {

                    if(tag.getTagName().equals("Orientation")){
                        final Integer index = directory.getInteger(274);
                        System.out.format("[%s] - %s = %s",
                                directory.getName(), tag.getTagName(),index);
                        BufferedImage image = getRotatedImage(f,index);
                        File img = new File(outputFileName+".png");
                        ImageIO.write(image,"png",img);
                        //return 0;

                    }
                }
                if (directory.hasErrors()) {
                    for (String error : directory.getErrors()) {
                        System.err.format("ERROR: %s", error);
                    }
                }
            }
        } catch (ImageProcessingException e) {
            System.out.println("Image processing exception while rotating image");
            throw e;
        } catch (IOException e) {
            System.out.println("IO exception while rotating image");
            throw e;
        }
        return 0;
    }
4

1 回答 1

0

有两种方向,因为一种用于图像,另一种用于缩略图。

与其遍历所有目录,不如通过Metadata.getFirstDirectoryOfTypeor获取您想要的目录Metadata.getDirectoriesOfType。然后,您可以直接向该目录询问标签的值。同样,不需要迭代所有标签——这只会浪费资源(CPU/内存)。

于 2017-01-05T14:02:38.713 回答