前提・実現したいこと
androidアプリでギャラリー内の画像を選択した後に、トリミングしてimageButtonに描写する処理を作りたい。
発生している問題・エラーメッセージ
アプリ上でandroid標準搭載のトリミング機能を使用すると実機やAVDですべての画像に対して「この画像の編集はサポートされていません」と表示される。
該当のソースコード
kotlin
1class RegistrationActivity : AppCompatActivity() { 2 private lateinit var realm: Realm 3 override fun onCreate(savedInstanceState: Bundle?) { 4 super.onCreate(savedInstanceState) 5 setContentView(R.layout.activity_registration) 6 imageButton.setOnClickListener { 7 val intent = Intent(Intent.ACTION_OPEN_DOCUMENT) 8 intent.addCategory(Intent.CATEGORY_OPENABLE) 9 intent.type = ("image/*") 10 startActivityForResult(intent,1) 11 } 12 } 13 14 public override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { 15 if(resultCode == RESULT_OK) { 16 when(requestCode){ 17 1->{ 18 var uri: Uri? 19 if(resultData != null) { 20 try{ 21 uri = resultData?.data //渡されてきた画像データ回収 22 val intent = Intent("com.android.camera.action.CROP") 23 intent.setDataAndType(uri,"image/*") 24 intent.putExtra("crop","true") 25 intent.putExtra("outputX", 250) 26 intent.putExtra("outputY", 320) 27 intent.putExtra("aspectX", 1) 28 intent.putExtra("aspectY", 1) 29 intent.putExtra("scale", true) 30 intent.putExtra("return-data", true) 31 startActivityForResult(intent, 2) 32 } catch (e: IOException) {e.printStackTrace()} 33 } 34 } 35 2->{ 36 if (resultData != null){ 37 //var bmp: Bitmap = resultData!!.getExtras().getParcelable("resultData"){ 38 var uri: Uri? 39 uri = resultData?.data 40 var bmp:Bitmap = getBitmapFromUri(uri) 41 imageButton.setImageBitmap(bmp) 42 } 43 } 44 } 45 } 46 } 47 private fun getBitmapFromUri(uri: Uri): Bitmap { 48 val parcelFileDescriptor = contentResolver.openFileDescriptor(uri, "r") 49 val fileDescriptor = parcelFileDescriptor!!.fileDescriptor 50 var image = BitmapFactory.decodeFileDescriptor(fileDescriptor) 51 parcelFileDescriptor.close() 52 return image 53 } 54}
試したこと
putExtraの値の変更
onActivityResult内の処理の形式を変えたりを行った
例when文をifなどで行うなど
javaをkotlinにする知識はあります。
javaでも構いません、お助けください。
補足情報(FW/ツールのバージョンなど)
android studio version3.1
使用実機:nexus 5X version8.0
使用ADV:Nexus 5X api27 version8.1
あなたの回答
tips
プレビュー