我有一个ImageView
我正在从中获取位图,然后使用copyPixelstoBuffer
并将其复制到buffer_temp
,现在我想使用反向算法再次转换它到另一个位图,从该位图到ImageView2
,
我到底在做的是使用ImageView
将Buffer
中的图片复制到Pasting
并使用Imageview
将Buffer
复制到另一个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();
}
答案 0 :(得分:2)
btmp null 。 使用附加代码是没有办法的。那么,btmp的值将是任何。但它是 null !
如果要克隆Bitmap,请使用create方法或任何其他方法。
Bitmap btmp = Bitmap.create(drawable.getBitmap());
答案 1 :(得分:2)
“是的,btmp为空”
但是,你试图在它上面调用方法调用:
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);
...