撮影した写真から必要な個所だけを切り抜きたい場合は、外部アプリのトリミング機能を利用すると便利です。
// uri: 写真のUri private void showTrimImage( Uri uri ){ Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true"); intent.putExtra("aspectX", 10); intent.putExtra("aspectY", 5); intent.putExtra("outputX", 1000); intent.putExtra("outputY", 500); intent.putExtra("scaleUpIfNeeded", true); intent.putExtra("scale", "true"); intent.putExtra("noFaceDetection", true); intent.putExtra("return-data", false); intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.name()); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(--出力パス--)); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); ((AppCompatActivity)mContext).startActivityForResult(intent,999); }
putExtraで設定している各種パラメータは必要に応じて調整してください。
なお、写真のサイズが大きすぎる場合、"return-data"により、Intentの戻り値として写真を設定してしまうと、メモリ不足により強制終了する場合がありますので、外部アプリで指定Uriに写真を保存させるようにすることをお勧めします(MediaStore.EXTRA_OUTPUTの利用)。