Androidアルバム画像を選択してカット

2061 ワード

前言
Androidアプリでは、アルバム画像をアップロードする必要があることがよくあります.ここでは、アルバム画像の選択と切り取り方法を記録します.
アルバム選択画像
1.アルバムまたはファイルマネージャをアクティブにして、写真を取得します.コードは次のとおりです.
	private static final int TAKE_PICTURE_FROM_ALBUM = 1;
	private void takePictureFromAlbum() {
		Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
		intent.setType("image/*");
		startActivityForResult(intent, TAKE_PICTURE_FROM_ALBUM);
	}
2. startActivity ForResult()メソッドにより、onActivity Result()でピクチャのURIを取得し、ピクチャのURIをピクチャトリミング関数に渡すことができます.コードは以下の通りです.
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (resultCode == Activity.RESULT_OK) {
			switch (requestCode) {
			case TAKE_PICTURE_FROM_ALBUM:
				if (data != null) {
					cropPictureFromAlbum(data.getData());
				}
				break;
			case PICTURE_CROP_CODE:
				if (data != null) {
					//         bitmap
					Bitmap bitmap = data.getParcelableExtra("data");
				}
				break;
			default:
				break;
			}
		}
	}

	private static final int TAKE_PICTURE_FROM_ALBUM = 1;

	private void takePictureFromAlbum() {
		Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
		intent.setType("image/*");
		startActivityForResult(intent, TAKE_PICTURE_FROM_ALBUM);
	}

	private static final int PICTURE_CROP_CODE = 2;

	private void cropPictureFromAlbum(Uri pictureUri) {
		Intent intent = new Intent("com.android.camera.action.CROP");
		intent.setDataAndType(pictureUri, "image/*");
		intent.putExtra("crop", "true");
		//      
		intent.putExtra("aspectX", 1);
		intent.putExtra("aspectY", 2);

		//             
		intent.putExtra("outputX", 300);
		intent.putExtra("outputY", 300);

		//       
		intent.putExtra("noFaceDetection", true);

		intent.putExtra("return-data", true);

		startActivityForResult(intent, PICTURE_CROP_CODE);
	}

3.onActivity Resultでdata経由getParcelableExtra(「data」)は、ピクチャトリミング後のbitmapを取得し、bitmapをピクチャコントロールに割り当てることができます.