在 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 中设置位图图像的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 ImageView 是不是包含位图?

从android中的文件路径获取内容uri

如何从资源中设置位图

在安卓系统中,我不能在viewholder中设置图片。

在 .NET Format16bppGrayScale 图像中设置单个像素

如何在不使用 ImageView 的情况下从 API 端点下载图像或位图?