我有imageView1,我想将其转换为位图并发送到上一个活动,所以我的代码是:

    imageView1.buildDrawingCache();
       Bitmap bm=imageView1.getDrawingCache();
        int bytes =  bm.getWidth()*bm.getHeight()*4;
     ByteBuffer buffer = ByteBuffer.allocate(bytes);
      bm.copyPixelsToBuffer(buffer);
      final byte[] array = buffer.array();


但我得到:

04-25 17:45:55.959:E / AndroidRuntime(7066):由以下原因引起:java.lang.NullPointerException

不知道我是否可以通过这种方式使用drawingCache。

最佳答案

假设您有一个名为ChildActivity的活动,在其中使用imageView1,
而不是像这样声明它:

ImageView imageView1;


做:

protected static ImageView imageView1 = null;


为了在任何方法外部可见,必须在类声明部分的最高作用域级别上执行此操作。

然后,假设您有一个名为ParentActivity的活动,您想在其中使用imageView1的图形,
您可以在活动名称前添加imageView1控件:

Bitmap bmp = ((BitmapDrawable) ChildActivity.imageView1.getDrawable()).getBitmap();


关键功能是:ChildActivity.imageView1

我在其他活动中提到了ImageView。
而且我不必在活动之间传递位图。

它比您尝试的要安全,而且(我想)更快。

关于android - 图像和buildDrawingCache,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23297760/

10-09 06:03