在Android中将byte[]显示到ImageView

25

这可以实现吗?我正在读取一个包含图像Base64字符串的XML文件。 我计划使用Base64.decode将其转换为图像字节数组。 但是,我卡在了如何将其用于ImageView上。 我是否需要先创建一个“drawable”类,然后将其设置为ImageView的src属性?

谢谢!

5个回答

62

如果还有其他人遇到这个问题,这里是代码

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.ImageView;

public class ModelAssistant {

    public static void setImageViewWithByteArray(ImageView view, byte[] data) {
        Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
        view.setImageBitmap(bitmap);
    }
}

33
您可以使用 BitmapFactory.decodeByteArray() 进行解码。

5
这是一个清晰的示例代码链接:http://www.higherpass.com/Android/Tutorials/Working-With-Images-In-Android/2/。 - firnnauriel

6
// Convert bytes data into a Bitmap
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
ImageView imageView = new ImageView(ConversationsActivity.this);
// Set the Bitmap data to the ImageView
imageView.setImageBitmap(bmp);

// Get the Root View of the layout
ViewGroup layout = (ViewGroup) findViewById(android.R.id.content);
// Add the ImageView to the Layout
layout.addView(imageView);

我们使用Bitmap.decodeByteArray()将字节数据转换为位图,然后将其设置为新创建的ImageView。

0

虽然有点晚了,但我不得不分享这个解决方案:

 Glide.with(context)
.load(Base64.decode(base_64_string,0))
//.load(Uri.parse(file_uri_string)//load from file path
.diskCacheStrategy(DiskCacheStrategy.NONE)//to prevent caching
.skipMemoryCache(true)//to prevent caching
.into(view);

0
byte[] pic = intent.getByteArrayExtra("pic"); 
capturedImage = (ImageView) findViewById(R.id.capturedImage);
Bitmap bitmap = BitmapFactory.decodeByteArray(pic, 0, pic.length);
Bitmap bitmap1 = Bitmap.createScaledBitmap(bitmap,capturedImage.getWidth(),capturedImage.getHeight(),true);
capturedImage.setImageBitmap(bitmap1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接