我必須通過一個角度旋轉圖像並通過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);
}
}
按此鏈接修剪圖片http://mobile.tutsplus.com/tutorials/android/capture-and-crop-an-image-with-the-device-camera/ –
可能的重複[代碼旋轉圖像捕獲的相機意圖不工作在Android](http://stackoverflow.com/questions/14123809/code-to-rotate-image-captured-by-camera-intent-not-working-in-android) –
@shylendra我發佈了我的代碼。在tat後旋轉我設置位圖圖像imageView.But我不知道如何獲得旋轉的圖像顯示在ImageView中,並將其發送到裁剪意圖。 – user3121545