プロフィール写真やアイコン画像の設定画面なんかでよくある「写真を選んで→トリミングして」ってやつです。
あんまり日本語の情報がなかったので書きます。
ギャラリーを呼び出して写真を選ぶ
public void onChangePhotoClick(View view) { Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intent, REQUEST_GET_CONTENT); }
トリミング機能(アプリ)を呼び出す
写真が選ばれたらonActivityResult()が呼び出されるので、選ばれた写真のUriを使ってトリミング機能(アプリ)を呼び出します。
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case REQUEST_GET_CONTENT: if (resultCode != RESULT_OK) return; Uri uri = data.getData(); // 選ばれた写真のUri Intent intent = new Intent("com.android.camera.action.CROP"); intent.setData(uri); intent.putExtra("outputX", 200); intent.putExtra("outputY", 200); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("scale", true); intent.putExtra("return-data", true); startActivityForResult(intent, REQUEST_CROP_PICK); break; } }
感の良い人はExtraのキー名でだいたい意味がわかると思いますが、各キーの意味は以下の通りです。
トリミングされた画像を取得する
トリミングされた画像もonActivityResult()で受け取ります。
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case REQUEST_GET_CONTENT: // 省略 case REQUEST_CROP_PICK: if (resultCode != RESULT_OK) return; Bitmap bitmap = data.getExtras().getParcelable("data"); // 取得したBitmapでごにょごにょする } }
以上です!
レシピ105に入れたい。。。