2011-02-08 30 views
4

我正在制作一个应用程序,让我从Android中的Live IP Camera获取Mjpg图像。如何在Android中显示位图图像

问题是,因为当我得到形式为ByteArray的图像。我如何显示Image

我用下面的代码来显示图像:

ImageView imageView = (ImageView) findViewById(R.id.imageView1); 
Bitmap bmp = BitmapFactory.decodeByteArray(buffer, start, a); 
imageView.setImageBitmap(bmp); 

但I M getiing异常

android.view.ViewRoot CallFromWrongThreadException 

请解释如何显示在Android布局的ByteArray。

回答

2

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

1

当你正在做一些视图相关的工作总是从GUI线程即它做。 the thread that created the view hierarchy

所以用Handlers来实现这个。

1

例外CallFromWrongThreadException意味着您尝试从不是UI线程的线程更新UI,而这是不允许的。

所以你的问题不是你的代码来创建图像是错误的,但你是在错误的地方做它。 如果您在AsyncTask的背景中获取图像时,您需要setImageBitMap(),postExecute()而不是doInBackground()

没有看到更多的代码,我们不能帮助你更多。

5
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);