2014-05-15 63 views
-1

我的機器人設法設置setAttribute(ExifInterface.TAG_ORIENTATION,..)但不知道如何才能看到更改?

我的應用程序拍攝肖像照。

在畫廊我看到它確定

但當保存到我的服務器我看到它在景觀。

(這種情況僅在薩姆鬆S2)

我讀它可能與Exif標籤相連。

我檢查我的圖像文件,並得到

ORIENTATION_ROTATE_90

這是什麼意思?

我試圖將其設置爲ORIENTATION_NORAMLORIENTATION_UNDEFINED但我不確定如何查看更改?

在照相館我看到它在景觀僅 (是否採取縱向或橫向)

我設法設置屬性爲我正確地讀出了新的問題。

但我如何看到變化?這應該有助於我原來的問題嗎?

 ExifInterface exif; 
     try { 
      exif = new ExifInterface(imageFilename); 
      int orientation = 
       exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); 
      exif.setAttribute(ExifInterface.TAG_ORIENTATION, 
       String.valueOf(ExifInterface.ORIENTATION_ROTATE_270)); 
//also tried ExifInterface.ORIENTATION_ROTATE_UNDEFINED) 
      exif.saveAttributes(); 
      orientation = 
       exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); 
      boolean b = orientation == Configuration.ORIENTATION_LANDSCAPE; 

     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

我該如何解決這個問題?

爲什麼更改exif標籤不夠?如果更改exif標籤什麼都不做 - 爲什麼除了旋轉之外還需要更改它?

回答

0

我的應用程序拍攝了肖像照片。在畫廊中我看到它確定,但是當保存到我的服務器時,我在景觀中看到它。

這是因爲您的服務器忽略了EXIF標頭。

(這種情況僅在薩姆鬆S2)

它發生在比這許多更多的設備。這是我爲my CWAC-Camera library中的開發人員修補的許多事情之一。

我檢查過我的圖像文件並得到了ORIENTATION_ROTATE_90這是什麼意思?

它是從相機的消息,給圖像觀看應用,說:「當你告訴它PLZ旋轉這個90度!kthxbye」

我試圖將其設置爲ORIENTATION_NORAML或ORIENTATION_UNDEFINED但我不確定如何查看更改?

如果你什麼也沒做,所有這些都會導致你的圖片出錯。除了處理EXIF標記之外,還需要旋轉圖像文件。

+0

巨大的感謝,但你爲什麼說'如果你什麼也沒做',那麼所有會做的事情都會導致你的形象在任何地方都是錯的?爲什麼改變exif標籤不夠?如果更改exif標籤什麼都不做 - 爲什麼除了旋轉之外還需要更改它? –

+0

@EladBenda:「爲什麼改變exif標籤不夠?」 - 因爲它不會更改位圖。您將獲得您在服務器上看到的行爲(忽略EXIF標記)*,因爲您正在阻止兌現EXIF標記的圖像工具。 「除了輪換之外,爲什麼我還需要改變它?」 - 因爲那樣做的圖像工具*會尊重EXIF標籤將再次旋轉圖像*,這將是錯誤的。 – CommonsWare

相關問題