0

好的,所以我有一个代码,它获取当前视图的图像,并将其转换为位图,然后我就到这里了,

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

现在,我想做的是拍下当前视图的样子,但是从这里,我可以很容易地放入bitmapDrawableImageView,但这不是我想要的,我想从这里开始,保存它。我能做些什么?我发现了一种方法,使用

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();

但是
当我这样做时,我最终会得到一个 NullPointerException

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

我错过了什么吗?

好的,现在它通过上面的代码,然后让它过去fos.close();完成,但是什么也没发生,它没有保存,不在我的手机上,什么都没有

4

1 回答 1

0

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

于 2010-11-28T08:14:19.420 回答