问题描述
- BitmapFactory.decodeByteArray为空,求大神解惑
-
String stra = d.getResult().getImage(); try { byte[] data=null; data = stra.getBytes("UTF-8"); // 为UTF8编码 // 把二进制图片转成位图 Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,null); image.setImageBitmap(bitmap); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); }
data中有数据,bitmap为空,求解
解决方案
你的字节数据要先转成YUV格式的设置好image类型才可以调用decodeByteArray();改成这样
YuvImage yuvimage=new YuvImage(data, ImageFormat.NV21, 20,20, null); //20、20分别是图的宽度与高度
ByteArrayOutputStream baos = new ByteArrayOutputStream();
yuvimage.compressToJpeg(new Rect(0, 0,20, 20), 80, baos);//80--JPG图片的质量[0-100],100最高
byte[] jdata = baos.toByteArray();
bitmap = BitmapFactory.decodeByteArray(jdata, 0, jdata.length);
解决方案二:
你确定data中有数据?我看代码bitmap也只能从data数据转换来,所以这样我就觉得好奇怪,怎么可能data有数据,bitmap为空???
解决方案四:
byte[] data = null;
data = stra.getBytes("UTF-8");
// 为UTF8编码
// 把二进制图片转成位图
YuvImage yuvimage = new YuvImage(data, ImageFormat.NV21, 200,
200, null); // 20、20分别是图的宽度与高度
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 80--JPG图片的质量[0-100],100最高
yuvimage.compressToJpeg(new Rect(0, 0, 20, 20), 80, baos);
byte[] jdata = baos.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(jdata, 0,
jdata.length);
image.setImageBitmap(bitmap);
时间: 2024-09-22 19:39:27