2013-06-13 73 views
3

我正在研究一個應用程序,我已向用戶提供設備,他可以使用他的移動照相機拍攝照片,然後在Imageview中顯示圖像。如何在肖像模式下設置捕獲的圖像

現在的問題是,如果我在縱向模式或橫向模式下捕捉圖像,它總是在橫向模式下在ImageView中設置圖像,但我希望圖像只能設置爲縱向模式。請幫我解決這個問題。

任何幫助將是明顯的...

謝謝

回答

5
Matrix mat = new Matrix(); 

ExifInterface exif = new ExifInterface(yourimagepath); 
String orientstring = exif.getAttribute(ExifInterface.TAG_ORIENTATION); 
int orientation = orientstring != null ? Integer.parseInt(orientstring) : ExifInterface.ORIENTATION_NORMAL; 
int rotateangle = 0; 
if(orientation == ExifInterface.ORIENTATION_ROTATE_90) 
      rotateangle = 90; 
if(orientation == ExifInterface.ORIENTATION_ROTATE_180) 
      rotateangle = 180; 
if(orientation == ExifInterface.ORIENTATION_ROTATE_270) 
      rotateangle = 270; 

mat.setRotate(rotateangle, (float) bmpPic.getWidth()/2, (float) bmpPic.getHeight()/2); 

File f = new File(yourimagepath);  
Bitmap bmpPic = BitmapFactory.decodeStream(new FileInputStream(f), null, null); 
Bitmap bmpPic1 = Bitmap.createBitmap(bmpPic, 0, 0, bmpPic.getWidth(), bmpPic.getHeight(), mat, true); 
+0

,感謝您的回答,但如何添加墊價值爲位圖可以請您使用createbitmap POST方法的代碼片斷這個 –

+0

.. – Riser

+0

能否請你將它張貼我無法做到這一點 –

2

使用這樣的

Matrix matrix=new Matrix(); 
imageView.setScaleType(ScaleType.MATRIX); //required 
matrix.postRotate((float) angle, pivX, pivY); 
imageView.setImageMatrix(matrix); 

爲EXP:

matrix.postRotate(90f, imageView.getDrawable().getBounds().width()/2, imageView.getDrawable().getBounds().height()/2) 
+0

這裏應該是角度,旋轉和旋轉嗎? –

+0

抱歉,沒有看到示例 –

+0

鼠標懸停在eclipse上的postRotate()中,您可以很容易地看到細節 –

-1

這裏是一個很好的解決方案我遇到這個:

https://stackoverflow.com/a/34241250/8033090

一號線的解決方案:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 

Picasso.with(context).load("file:" + photoPath).into(imageView); 

這將自動檢測旋轉和地方形象在正確的方向

畢加索是一個非常強大的庫,用於處理您應用中的圖像,包括:使用最少內存使用的複雜圖像轉換。它可能需要一秒鐘才能加載,但我只是在圖像視圖後面放置了一些說「加載圖像」的文本,以及圖像加載時是否覆蓋了文本。

+0

雖然此鏈接可能回答問題,但最好在此處包含答案的基本部分,並提供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/評論/低質量帖/ 16252863) –

+0

@suraj感謝您的建議,我已更新我的文章。 –