java – RuntimeException:缓冲区不足以容纳像素
发布时间:2020-12-15 04:18:18 所属栏目:Java 来源:网络整理
导读:我通过套接字在字节数组中收到一个Bitmap,我读了它然后我想在我的应用程序中将它设置为os.toByteArray作为 ImageView.我使用的代码是: try { //bmp = BitmapFactory.decodeByteArray(result,result.length); bitmap_tmp = Bitmap.createBitmap(540,719,Bitm
我通过套接字在字节数组中收到一个Bitmap,我读了它然后我想在我的应用程序中将它设置为os.toByteArray作为
ImageView.我使用的代码是:
try { //bmp = BitmapFactory.decodeByteArray(result,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 我搜索了类似的问题,但无法找到解决问题的方法. 解决方法
对于
Bitmap::copyPixelsFromBuffer(),请查看源(版本2.3.4_r1,上次Bitmap在4.4之前的Grepcode上更新)
错误的措辞有点不清楚,但代码澄清 – 这意味着您的缓冲区计算为没有足够的数据来填充位图的像素. 尝试 ByteBuffer buffer = ByteBuffer.wrap(os.toByteArray()); buffer.rewind(); bitmap_tmp.copyPixelsFromBuffer(buffer); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |