【发布时间】:2014-03-04 09:01:12
【问题描述】:
我通过套接字接收字节数组中的位图并读取它,然后我想在我的应用程序中将其设置为os.toByteArray 为ImageView。我使用的代码是:
try {
//bmp = BitmapFactory.decodeByteArray(result, 0, result.length);
bitmap_tmp = Bitmap.createBitmap(540, 719, Bitmap.Config.ARGB_8888);
ByteBuffer buffer = ByteBuffer.wrap(os.toByteArray());
bitmap_tmp.copyPixelsFromBuffer(buffer);
Log.d("Server",result+"Length:"+result.length);
runOnUiThread(new Runnable() {
@Override
public void run() {
imageView.setImageBitmap(bitmap_tmp);
}
});
return bmp;
} finally {
}
当我运行我的应用程序并开始接收 Byte[] 并期望 ImageView 已更改时,事实并非如此。
LogCat 说:
java.lang.RuntimeException: Buffer not large enough for pixels at
android.graphics.Bitmap.copyPixelsFromBuffer
我搜索了类似的问题,但找不到解决问题的方法。
【问题讨论】:
-
你的安卓操作系统版本是多少?
-
图像字节的尺寸是否与您的位图 (540x719) 相同?
-
不需要用ByteBuffer.allocate设置缓冲区大小吗?
-
我使用的是 4.1.2(API 级别 16)。
-
@Henry 是的。 byte[] 的长度为 540*719*4。