嗨我有一个图像的原始转储,我存储为字节数组,我必须在表面视图上显示它。我试图将这个字节数组转换为一个可变位图,并在表面持有者的画布上渲染,但是当" drawBitmap"时,我得到这个空指针异常。函数被调用。
BlockquoteE / AndroidRuntime(28358):致命异常:主要 E / AndroidRuntime(28358):java.lang.NullPointerException E / AndroidRuntime(28358):在android.graphics.Canvas.throwIfRecycled(Canvas.java:1025) E / AndroidRuntime(28358):在android.graphics.Canvas.drawBitmap(Canvas.java:1065) 块引用
这是我尝试渲染字节数组的方法
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
//getting byte array
byte[] bytes;
File f1= new File("/data/dump.txt");
int offset = 0, n = 0;
InputStream in;
long length = f1.length();
bytes = new byte[(int) length];
try {
in = new FileInputStream(f1);
while (offset < bytes.length
&& (n = in.read(bytes, offset, bytes.length - offset)) >= 0) {
offset += n;
}
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// getting byte array
Bitmap bmp;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inMutable = true;
bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length,options );
Canvas canvas = holder.lockCanvas();
if(canvas != null){
canvas.drawBitmap(bmp, 0, 0, null);
}
holder.unlockCanvasAndPost(canvas); //finalize
}
答案 0 :(得分:2)
您的字节数组bytes
永远不会被实例化。因此,当您致电BitmapFactory.decodeByteArray
时,会返回null
。
public static Bitmap decodeByteArray(byte [] data,int offset,int length,BitmapFactory.Options opts)
自:API级别1
从指定的字节数组解码不可变位图 ...<强>返回强>
解码后的位图,如果图像数据无法解码,则为null;如果opts为非null,则返回请求仅返回大小的opts(在opts.outWidth和opts.outHeight中)