Средство извлечения метаданных не может прочитать ориентацию камеры

У меня есть изображение, которое содержит 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;
    }

person The Cloud Guy    schedule 05.01.2017    source источник
comment
Stack Overflow удалил метаданные из вашего JPEG (или их там никогда не было).   -  person Drew Noakes    schedule 05.01.2017
comment
В изображении были метаданные, но похоже, что переполнение стека использует BufferedImageReader, который удаляет метаданные: D   -  person The Cloud Guy    schedule 06.01.2017


Ответы (1)


Существует две ориентации, поскольку одна предназначена для изображения, а другая — для эскиза.

Вместо того, чтобы перебирать все каталоги, получите только нужный каталог через Metadata.getFirstDirectoryOfType или Metadata.getDirectoriesOfType. Затем вы можете напрямую запросить у этого каталога значение тега. Опять же, нет необходимости повторять все теги — это просто тратит ресурсы (ЦП/память).

person Drew Noakes    schedule 05.01.2017
comment
на самом деле нет способа получить ориентацию изображения с помощью экстрактора метаданных ... Мне удалось решить проблему, прочитав изображение с помощью BufferredImageReader, а затем применив преобразование в соответствии с ориентацией эскиза. Хотя сложно объяснить, в чем именно заключалась проблема, все равно спасибо за помощь. - person The Cloud Guy; 06.01.2017
comment
Если ориентация есть, программа извлечения метаданных ее найдет. Если вы считаете, что в библиотеке есть ошибка, откройте задачу и прикрепите изображение: github .com/drewnoakes/metadata-extractor/issues/new - person Drew Noakes; 06.01.2017