2009-10-22 106 views
3

我發佈了這個在android dev論壇上,但想在這裏伸出援手。Android 1.6相機旋轉?

我們的應用程序中的一項活動是拍照。圖片預覽顯示1.5 & 1.6屏幕上的正確方式,但是當它保存時,它將保存旋轉的jpg 90。

我可以在顯示時實時旋轉它,我想我可以在保存後重新保存它。我的問題是我想拍照時正確保存它。

我的應用程序雖然編譯1.5工作正常。我有一些內存問題w/ 1.6由於圖像的大小,這是奇怪的b/c的圖像大小增加 當通過拍照w/surfaceholder/imagecapture 回調。我似乎已經修復重新顯示這些圖像,通過調整它們使用bitmapfactory矩陣 。但我的相機現在旋轉 應有盡有90度。看來,我的覆蓋surfaceChanged 什麼都不做,這是我在90設置旋轉(我不能 記得爲什麼,這是10個月前!)。我試圖在0度90度旋轉 攝像機參數參數。它似乎並不 做任何事情......任何想法?

回答

6

相機驅動程序不知道設備的方向。在1.5和1.6中,在調用takePicture()之前,需要調用parameters.set(「rotation」,度)來告訴驅動程序輪轉。在2.0中,有一個新的API setRotation(見下文)。請注意,有些設備會爲您旋轉整個圖片,有些設備只需在EXIF標頭中設置方向。

http://developer.android.com/reference/android/hardware/Camera.Parameters.html#setRotation(int)

設置在度的裝置的取向。例如,假設設備的自然位置是風景。如果用戶以2048x1536分辨率以橫向模式拍攝照片,則應將旋轉設置爲0.如果用戶將手機順時針旋轉90度,則應將旋轉設置爲90.應用程序可使用OrientationEventListener設置此參數。相機驅動程序可以在不旋轉圖片的情況下在EXIF標頭中設置方向。或者驅動程序可能會旋轉圖片和EXIF縮略圖。如果旋轉Jpeg圖片,則EXIF標題中的方向將丟失或1(第0行爲頂部,第#0列爲左側)。
參數
rotation設備以度爲單位的方向。旋轉只能是0,90,180或270

+0

在2.1上試過,但它永遠不會保存到圖像。我最初使用Images.Media.insertImage()保存文件。我從來沒有在Android上的其他移動平臺上遇到過更多的問題。這對我來說是最令人沮喪的過程。 – Brenden 2011-03-15 20:44:23