如何从改造响应 kotlin android 下载图像

Posted

技术标签:

【中文标题】如何从改造响应 kotlin android 下载图像【英文标题】:How can download image from retrofit response kotlin android 【发布时间】:2022-01-08 21:17:56 【问题描述】:

如何从改造响应 Kotlin 下载图像

我收到了这样的回复

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

如何使用 FileOutputStream 将图像保存在设备目录中

【问题讨论】:

我认为您需要先解码您的 URL,如下所示 String decodedURL = URLDecoder.decode("URL", "UTF-8"); 是的,你是对的,我需要先解码 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 : 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?) 
                                
                            )
                    

【讨论】:

以上是关于如何从改造响应 kotlin android 下载图像的主要内容,如果未能解决你的问题,请参考以下文章

如何将改造回调响应中的回调从 java 转换为 Kotlin

在 Kotlin 中为成功和错误处理两种不同的改造响应

如何从包含android中API响应的缓存中获取改造缓存数据

如何通过 android 中的改造从 php 中检索“字符串响应”?

如何将 localhost 与改造结合使用来测试 android 应用程序 kotlin [重复]

改造响应体! Kotlin 安卓工作室