外部アプリで選択した画像をcropする2017年01月22日(編集2017年01月22日)TweetAndroidアプリ開発では、外部アプリと連携して画像を取得できます。取得した画像は、cropして保存やサーバーにアップロードしたい場合があります。この記事は、外部アプリと連携して取得した画像をcropする方法を記載した記事です。中級者向けサンプルコードAndroid-Media-DemoCropCropとは、画像の必要な部分だけを切り抜くことです。Androidアプリでは、Intentの機能を使って、crop機能を呼び出すことができます。外部アプリから取得した画像でcropアプリを立ち上げる処理を実装します。外部アプリから画像を取得する方法がわからない場合は、この記事を参照してください。onActivityResultonActivityResultメソッドはstartActivityForResultメソッドの結果を受け取ります。このメソッドで外部アプリ立ち上げ時に設定したリクエストコード(ImageSelectionCropDemo.REQUEST_CODE_CHOOSER)を受け取った時、クラップを起動します。startCropクラップアプリを起動します。Intentにcom.android.camera.action.CROPを設定します。Intent("com.android.camera.action.CROP");起動するcropアプリのアスペクト比は任意に設定することができます。アスペクト比は縦横比のことです。映像なら、ワイド(16:9)とスタンダード(4:3)の2つが基本になります。アスペクト比を16:9に設定します。次に、アスペクト比の設定をコメントアウトします。9);アスペクト比の設定なしcrop画像のアスペクト比が手動で変更できるようになりました。このように、アスペクト比は、アプリに応じた設定が可能です。crop画像の出力画像タイプと画像出力フォルダの設定も可能です。Uri.fromFile(getExternalStorageTempStoreFilePath()));出力画像タイプの設定とcrop画像出力フォルダの設定は任意です。画像出力フォルダを指定しない場合は、選択した画像のあるフォルダと同じフォルダにcropファイルが保存されます。cropした画像をサーバーアップロード後に削除する等の場合は、画像出力フォルダを指定するべきです。Android6.0以降の場合、cropした画像の保存をするためにWRITE_EXTERNAL_STORAGEの権限処理実装が必要です。権限処理の実装がわからない場合は、この記事を参考にしてください。上記のcropした画像を取得する処理を記載します。onActivityResultonActivityResultメソッドはstartActivityForResultの結果を受け取ります。cropアプリ立ち上げ時に設定したリクエストコード(ImageSelectionCropDemo.REQUEST_CODE_CROP)を受け取ります。break;cropされた画像はintentを使ってuriで取得します。selectedImage.setImageURI(data.getData());画像はUriからbitmapに変換して画面に表示するべきですが、ここでは省略します。最後に、受け取ったcrop画像が不要になった場合は、ファイルを削除します。deleteExternalStoragePublicPicture();ビルド上記のコードの動作を確認してみましょう。appcropした画像が表示されました。結論Androidはデフォルトでcrop処理が実装可能になっています。デフォルトのcom.android.camera.action.CROPはうまく動作しない端末があるので、アプリの容量に制限がないのであればライブラリを組み込むことを考えると良いでしょう。