我正在开发一个 Android 项目,我需要从 API 检索 Base64 编码的图像并将其显示在 ImageView 中。但是,我遇到了图像无法正确显示的问题。当我记录 Base64 字符串时,我注意到与我从 Postman 获得的字符串相比,它显得不完整。
我的代码是:
val data = response.data as? MasterDataModel ?: return
val supportedLogos = data.supportedLogo
val imageViews = listOf(binding.imgOne, binding.imgTwo, binding.imgThree, binding.imgFour)
for (i in 0 until minOf(supportedLogos.size, imageViews.size)) {
val base64String = supportedLogos[i].logo
base64String?.logDebug("BASE64IMAGE")
val uri = Uri.parse(base64String)
imageViews[i].setImageURI(uri)
imageViews[i].visibility = View.VISIBLE
}
我已经确认从API获取的Base64字符串是有效的,我用postman进行了测试,并且在使用在线Base64查看器进行测试时它显示正确。
有人可以检查我的代码并提供有关为什么 Base64 图像未在 ImageView 中正确显示的见解吗?在 Android 中处理 Base64 图像时,是否有任何常见的陷阱或我应该考虑的额外步骤?
任何帮助或指导将不胜感激。
我猜你已经完全收到了 Base64,但你的错误是你没有将 Base64 转换为位图。
因此,请阅读this答案,并注意删除 Base64 字符串开头的“data:image/png;base64,”。
关于不完整的日志,我应该说每条日志消息都有 4KB 的限制,如果你想绕过这个限制,你可以将你的字符串分割成一些小于 4KB 的块,然后打印它们。