2010-11-28 55 views
0

好了,所以我有一个代码,即把当前视图的图像,并把它变成一个位图,然后我会在这里结束,保存BitmapDrawable或位图

Bitmap bm = view.getDrawingCache(); 
BitmapDrawable bitmapDrawable = new BitmapDrawable(bm); 

现在,我”我试图做的是拍摄当前视图的图像,但是从这里我可以很容易地将bitmapDrawable放入ImageView中,但这不是我想要的,我想从这里开始并保存它。我能做什么?我发现了一个办法,用

FileOutputStream fos; 
    try { 
    fos = super.openFileOutput("output.png",MODE_WORLD_READABLE); 
    bm.compress(CompressFormat.PNG, 75, fos); 

     fos.flush(); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
    e.printStackTrace(); 
    } catch (IOException e) { 
    e.printStackTrace(); 

}
但我这样做的时候,我在

bm.compress(CompressFormat.PNG, 75, fos); 

结束了一个NullPointerException我这么想吗?

好了,现在看来,它通过上面的代码,然后使得过去fos.close();结束,但后来什么也没有发生,它不保存,而不是我的手机,没有什么

回答

0

唯一可以为空的该行(并导致NullPointerException)为bm,这意味着Bitmap bm = view.getDrawingCache();未按预期工作。你可以发布堆栈跟踪吗?

+0

两件事,是的,但我如何发布堆栈跟踪?但是当我把它放入一个imageview中,它的工作原理和显示视图图片。 – Samuel 2010-11-28 08:19:36