Как загрузить изображение с модифицированного ответа kotlin для Android

#android #file-io #retrofit

#Android #файл-ввод-вывод #переоборудование

Вопрос:

Как можно загрузить изображение из retrofit response Kotlin

я получил такой ответ

 "image_thumb": "http://demo.co/flightrecord/images/passport/thumb/passport-307199094910Koala.jpg"  

как сохранить изображение в каталоге устройств с помощью FileOutputStream

Комментарии:

1. Я думаю, что вам нужно сначала декодировать свой URL, как показано ниже, строка decodedURL = URLDecoder.decode(«URL», «UTF-8»);

2. да, вы правы, сначала мне нужно расшифровать URL-адрес

Ответ №1:

Ваше решение

 if (response.body()?.data != null) {  val result = URLDecoder.decode(response.body()?.data?.get(0)?.dof!!, StandardCharsets.UTF_8.name())  val image1 = URLDecoder.decode(response.body()?.data?.get(0)?.image_thumb!!, StandardCharsets.UTF_8.name())  var imagePath: String   Glide.with(this)  .asBitmap()  .load(image1)  .into(object : CustomTargetlt;Bitmapgt;(){  override fun onResourceReady(resource: Bitmap, transition: Transitionlt;in Bitmapgt;?) {  val fos: FileOutputStream? =  activity?.openFileOutput( response.body()?.data?.get(0)?.userid!!, AppCompatActivity.MODE_PRIVATE)  resource.compress(Bitmap.CompressFormat.JPEG, 50, fos)  fos?.close()  imagePath = activity?.applicationContext?.getFileStreamPath(response.body()?.data?.get(0)?.userid!!)?.absolutePath?.toUri()  .toString()  handler.passportInsert(  PassportModelClass(  response.body()?.data?.get(0)?.userid!!,  response.body()?.data?.get(0)?.fistname!!,  response.body()?.data?.get(0)?.surname!!,  response.body()?.data?.get(0)?.nationality!!,  result,  response.body()?.data?.get(0)?.gender!!,  imagePath,  response.body()?.data?.get(0)?.age!!.toInt()  )  )  binding.progress.isVisible = false  Toast.makeText(context, "restore successfully", Toast.LENGTH_SHORT).show()  }  override fun onLoadCleared(placeholder: Drawable?) {  }  })  }