在 ImageView 中设置位图图像
Posted
技术标签:
【中文标题】在 ImageView 中设置位图图像【英文标题】:Set a bitmap image in ImageView 【发布时间】:2018-12-10 07:20:29 【问题描述】:我试过了
try
byte[] decodedString = Base64.decode(repPlus, Base64.URL_SAFE);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
holder.imageView.setImageBitmap(decodedByte);
catch (Exception e)
Log.d("Error: ", e.getMessage());
它返回一个错误:
bad base-64
然后我尝试了这个Bad base-64 error。它消除了错误。 Base64 to Bitmap to display in ImageView 用于解码 base64 字符串
try
String repSlash = product.getImage().replace("/", "_");
String repPlus = repSlash.replace("+", "-");
byte[] decodedString = Base64.decode(repPlus, Base64.URL_SAFE);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
holder.imageView.setImageBitmap(decodedByte);
catch (Exception e)
Log.d("Error: ", e.getMessage());
但图像无法在应用程序中查看。
【问题讨论】:
【参考方案1】:在初始化位图后尝试这样做decodedByte
BitmapDrawable drawable = new BitmapDrawable(getResources(), decodedByte);
holder.imageView.setBackgroundDrawable(drawable);
编辑:试试这个:
String base64Image = product.getImage().split(",")[1];
byte[] decodedString = Base64.decode(base64Image, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
holder.imageView.setImageBitmap(decodedByte);
希望对您有所帮助!
【讨论】:
我遇到了 getResources() 的问题。我在一个适配器类。这样可以吗? 然后在Adapter构造函数中添加一个Context变量,然后做like,BitmapDrawable drawable = new BitmapDrawable(context.getResources(), decodedByte);
如果找到解决办法我会再发帖
@MikaelFaire 您能否重新检查您的 Base64 字符串,因为如果您进行正确的转换,这应该可以工作。进一步检查holder.imageview是否设置清晰。
我的base64字符串是这样的“data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCE.......”以上是关于在 ImageView 中设置位图图像的主要内容,如果未能解决你的问题,请参考以下文章