2017-01-05 12 views
0

У меня есть изображение, которое содержит 2 атрибута ориентации. Когда я пытаюсь прочитать метаданные изображения, он всегда выдает значение из второго атрибута ориентации.Извлечение метаданных Невозможно прочесть Ориентация камеры на конкретный объект

Есть ли способ прочитать первое значение ориентации?

Я приложил 2 файла. 1 - изображение, а 2 - метаданные изображения в виде текстового файла.

  1. Изображение enter image description here

  2. MetaData файл enter image description here

Я использую код, как показано ниже:

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; 
    } 
+0

Stack Overflow удалил метаданные из вашего JPEG (или его там никогда не было). –

+0

На изображении были метаданные, но похоже, что переполнение стека использует BufferedImageReader, который удаляет метаданные: D –

ответ

0

Есть две ориентации, потому что один является для образ, а другой - для bnail.

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

+0

на самом деле нет способа получить ориентация изображения с помощью экстрактора MetaData ... Мне удалось решить проблему, прочитав изображение с помощью BufferredImageReader, а затем применив преобразование в соответствии с ориентацией эскизов. Хотя трудно объяснить, в чем проблема, в любом случае, спасибо за вашу помощь. –

+0

Если ориентация там, метадатчик-экстрактор найдет ее. Если вы считаете, что в библиотеке есть ошибка, откройте проблему и прикрепите изображение: https://github.com/drewnoakes/metadata-extractor/issues/new –