如何在Android中显示位图图像

如何在Android中显示位图图像,android,image,decoding,Android,Image,Decoding,我正在制作一个应用程序,在这个应用程序中,我从安卓系统中的实时IP摄像头获取Mjpg图像 问题是,当我以ByteArray的形式获取图像时。如何显示图像 我正在使用以下代码显示图像: ImageView imageView = (ImageView) findViewById(R.id.imageView1); Bitmap bmp = BitmapFactory.decodeByteArray(buffer, start, a); imageView.setImageBitmap(bmp);

我正在制作一个应用程序,在这个应用程序中,我从安卓系统中的实时IP摄像头获取Mjpg图像

问题是,当我以
ByteArray
的形式获取图像时。如何显示
图像

我正在使用以下代码显示图像:

ImageView imageView = (ImageView) findViewById(R.id.imageView1);
Bitmap bmp = BitmapFactory.decodeByteArray(buffer, start, a);
imageView.setImageBitmap(bmp);
但我有个例外

android.view.ViewRoot CallFromWrongThreadException

请解释如何在android布局上显示bytearray。

当您执行与视图相关的工作时,请始终从GUI线程(即创建视图层次结构的线程)执行此操作


因此,使用
处理程序来实现这一点

您应该使用runOnUiThread()从其他线程更新视图。

异常
callfromErrorThreadException
表示您试图从一个非UI线程且不允许的线程更新UI

因此,您的问题不是创建图像的代码错误,而是您在错误的位置执行该操作。 例如,如果您在
异步任务
中在后台获取图像,则需要在
postExecute()
中设置图像位图()
,而不是在
doInBackground()

如果看不到更多的代码,我们将无法为您提供更多帮助。

查看mImg=findviewbyd(R.id.image\u来自\u库);
ImageView tv1;
tv1= (ImageView) findViewById(R.id.image);
InputStream si1 = asset.open("image/" + cat_arr1[i] + ".png");
Bitmap bitmap1 = BitmapFactory.decodeStream(si1);
tv1.setImageBitmap(bitmap1);
((ImageView)mImg.setImageBitmap(位图);
这对我有用