Search code examples
androidfile-ioretrofit

How can download image from retrofit response kotlin android


How can download image from retrofit response Kotlin

i got response from like this

 "image_thumb": "http%3A%2F%2Fdemo.co%2Fflightrecord%2Fimages%2Fpassport%2Fthumb%2Fpassport-307199094910Koala.jpg"

how can save image in device directory using FileOutputStream


Solution

  • Your solution

     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 : CustomTarget<Bitmap>(){
                                    override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
                                        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?) {
                                    }
                                })
                        }