2011-02-28 185 views
0

(原諒我,如果我得到這個完全錯誤,我是一個新手) 我正在顯示與MediaStore.ACTION_IMAGE_CAPTURE拍攝的一些照片。我試過被拍攝照片時禁用autoorientation但它似乎沒有工作,我用保存旋轉位圖android

putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION,ActivityInfo.SCREEN_ORIENTATION_NOSENSOR) 

這迫使我轉動了一些拍攝的照片的。然後我將這些照片保存到SDCARD。我的問題是,我不想每次用戶加載照片時旋轉它們。我試過這段代碼來創建一個新的位圖,它會保存在'旋轉'狀態。它在仿真器上工作,但在我的HTC上崩潰。我認爲它是一個內存問題。有什麼辦法可以有效地做到這一點?更好的是,有沒有辦法在Camera Intent拍照時真正禁用自動定向?

tempBitmap=BitmapFactory.decodeFile(dirPath+filename+".jpg"); 
int tempW = tempBitmap.getWidth(); 
int tempH = tempBitmap.getHeight(); 

if (tempW>tempH) { 
    Matrix mtx = new Matrix(); 
    mtx.postRotate(90); 
    Bitmap rotatedBitmap = Bitmap.createBitmap(Bitmap.createBitmap(tempBitmap, 0, 0, 
                 tempW, tempH, mtx, true)); 

} else{ 
    //... 
} 

回答

0

嘗試縮小您正在使用的圖像可能是內存問題。請參閱下面的可能解決方案

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 4; //1/4 of the original image 

tempBitmap=BitmapFactory.decodeFile(dirPath+filename+".jpg", options); 
int tempW = tempBitmap.getWidth(); 
int tempH = tempBitmap.getHeight(); 

if (tempW>tempH) { 
    Matrix mtx = new Matrix(); 
    mtx.postRotate(90); 
    Bitmap rotatedBitmap = (tempBitmap, 0,0,tempW, tempH, mtx, true); 
+0

指出爲什麼您認爲減少圖像是一種選擇可能是一件好事。 – 2012-11-15 00:32:09

1

同上,但他忘了在最後一行

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 4; //1/4 of the original image 

tempBitmap=BitmapFactory.decodeFile(dirPath+filename+".jpg", options); 
int tempW = tempBitmap.getWidth(); 
int tempH = tempBitmap.getHeight(); 

if (tempW>tempH) { 
Matrix mtx = new Matrix(); 
mtx.postRotate(90); 
Bitmap rotatedBitmap = **Bitmap.createBitmap**(tempBitmap, 0,0,tempW, tempH, mtx, true); 
0

通過下面的代碼去一些代碼,

對於圖像使用的停止ratation下面的代碼 -

private int getImageOrientation() 
{ 
    final String[] imageColumns = {MediaStore.Images.Media._ID, MediaStore.Images.ImageColumns.ORIENTATION}; 
    final String imageOrderBy = MediaStore.Images.Media._ID + " DESC"; 
    Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
      imageColumns, null, null, imageOrderBy); 

    if (cursor.moveToFirst()) { 
     int orientation = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.ImageColumns.ORIENTATION)); 
     System.out.println("orientation===" + orientation); 
     cursor.close(); 
     return orientation; 
    } else { 
     return 0; 
    } 
} 

如果您有任何問題,請參考以下鏈接

http://androidlift.info/2016/01/07/android-camera-image-capturing-and-uploading-to-php-server/