尝试在空对象引用上调用虚拟方法'void android.graphics.Bitmap.copyPixelsFromBuffer(java.nio.Buffer)'



我有一个ImageView,我从中得到位图,然后使用copyPixelstoBuffer并将其复制到buffer_temp,现在我想使用反向算法再次将其转换为另一个位图并从该位图转换为ImageView2

我正在做的是使用BufferPastingImageView中的图像复制到使用Buffer的另一个Imageview上,但是在复制copyPixelsFromBuffer时总是抛出

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.Bitmap.copyPixelsFromBuffer(java.nio.Buffer)' on a null object reference.

不知道为什么,需要帮助,

try {
                Buffer bfr = null;
                iv1.setImageResource(R.drawable.olx);
                BitmapDrawable drawable = (BitmapDrawable) iv1.getDrawable();
                Bitmap bitmap = drawable.getBitmap();
                int bytes=bitmap.getByteCount();
                ByteBuffer buffer_temp= ByteBuffer.allocate(bytes);
                bitmap.copyPixelsToBuffer(buffer_temp);
                System.out.println("Values are "+ bitmap.getAllocationByteCount());
                Bitmap btmp=null;
                //btmp.copyPixelsFromBuffer(buffer_temp);

                if(buffer_temp==null)
                 return;
                buffer_temp.rewind();
                btmp.copyPixelsFromBuffer(buffer_temp);

                if(buffer_temp==null)
                {
                    Toast.makeText(getApplicationContext(), "Null", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    Toast.makeText(getApplicationContext(), "Not Null", Toast.LENGTH_SHORT).show();
                }

            } catch (NotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }       

btmp 。没有办法通过使用附加的代码。那么,btmp的值将是任何。但它是null!

如果你想克隆位图,使用create方法或其他类似的方法。

Bitmap btmp = Bitmap.create(drawable.getBitmap());

"yes, BTMP is null"

但是,你试图调用它的方法调用:

btmp.copyPixelsFromBuffer(buffer_temp); // <- here

这行不通。在使用btmp之前,你应该初始化它。

更新:

像这样初始化:

...
System.out.println("Values are "+ bitmap.getAllocationByteCount());
// here's the initialization
Bitmap btmp = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());
buffer_temp.rewind();
// now you can call copyPixelsFromBuffer() on btmp
btmp.copyPixelsFromBuffer(buffer_temp);
...

相关内容

  • 没有找到相关文章

最新更新