2013-12-20 21 views
0

我必須通過一個角度旋轉圖像並通過android裁剪目的進行裁剪。當我單擊旋轉按鈕時,圖像應該以角度旋轉並顯示在圖像視圖中,當我點擊作物按鈕時,應該將旋轉的圖像發送給Android作物意圖。如何在角度上旋轉圖像並通過作物圖像裁剪圖像android

以這種方式,每當我點擊旋轉按鈕時,角度可能會改變,並且應該通過android裁剪操作裁剪圖像視圖中相應的旋轉圖像顯示。

我試圖在各個角度旋轉圖像,它工作正常。但是,無論何時我點擊裁剪按鈕,旋轉的圖像不會傳遞到裁剪,而是傳遞原始圖像。

這是我的代碼

image.setImageURI(imageURI);

if (savedInstanceState != null) { 
     rotation = savedInstanceState.getInt("ANGLE"); 
    } 

    mTempUri = HomeActivity.getOutputMediaFileUri("XXX", 
      "test1", MEDIA_TYPE_IMAGE, true); 

{

crop.setOnClickListener (新OnClickListener(){

 @Override 
     public void onClick(View v) { 
      doCrop(); 
     } 
    }); 

    rotate.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Toast.makeText(getApplicationContext(), 
        "Rotating.. Please wait", Toast.LENGTH_SHORT).show(); 
      rotate_Image(); 

     } 
    }); 
} 

public void doCrop() { 

    Intent intent = new Intent("com.android.camera.action.CROP"); 
    intent.setType("image/*"); 

    List<ResolveInfo> list = getPackageManager().queryIntentActivities(
      intent, 0); 

    int size = list.size(); 

    if (size == 0) { 
     Toast.makeText(this, "Can not find image crop app", 
       Toast.LENGTH_SHORT).show(); 

     return; 
    } else { 
     intent.setData(imageURI); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, mTempUri); 

     if (size == 1) { 
      Intent i = new Intent(intent); 
      ResolveInfo res = list.get(0); 

      i.setComponent(new ComponentName(res.activityInfo.packageName, 
        res.activityInfo.name)); 
      startActivityForResult(i, CROP_FROM_CAMERA); 
     } 
    } 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode != RESULT_OK) 
     return; 

    switch (requestCode) { 
    case CROP_FROM_CAMERA: 
     sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, 
       Uri.parse("file://" 
         + Environment.getExternalStorageDirectory()))); 
     this.finish(); 
     break; 

    } 
} 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    outState.putInt("ANGLE", rotation); 
    super.onSaveInstanceState(outState); 
} 

public void rotate_Image() { 
    rotation += 90; 
    rotation %= 360; 
    bitmap = null; 
    try { 
     bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), 
       imageURI); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    bitmap1 = getRotatedBitmap(bitmap); 
    image.setImageBitmap(bitmap1); 
} 

private Bitmap getRotatedBitmap(Bitmap bitmap) { 
    if (rotation % 360 == 0) { 
     return bitmap; 
    } 
    Matrix matrix = new Matrix(); 
    matrix.postRotate(rotation, bitmap.getWidth()/2, 
      bitmap.getHeight()/2); 
    return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), 
      bitmap.getHeight(), matrix, true); 
}  

}

+0

按此鏈接修剪圖片http://mobile.tutsplus.com/tutorials/android/capture-and-crop-an-image-with-the-device-camera/ –

+0

可能的重複[代碼旋轉圖像捕獲的相機意圖不工作在Android](http://stackoverflow.com/questions/14123809/code-to-rotate-image-captured-by-camera-intent-not-working-in-android) –

+0

@shylendra我發佈了我的代碼。在tat後旋轉我設置位圖圖像imageView.But我不知道如何獲得旋轉的圖像顯示在ImageView中,並將其發送到裁剪意圖。 – user3121545

回答