#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?) { } }) }