http://www.cnblogs.com/niupi/p/6000292.html
1.在获取图片前先调用setDrawingCacheEnabled(true)这个方法:
举例:mImageView.setDrawingCacheEnabled(true);
2。之后可以通过getDrawingCache()获取图片
举例:Bitmap obmp = Bitmap.createBitmap(mImageView.getDrawingCache()); //获取到Bitmap的图片
3.获取完图片后记得调用setDrawingCacheEnabled(false)
举例:mImageView.setDrawingCacheEnabled(false);
这样就可以。
补充:如果你遇到了这行代码Bitmap obmp = Bitmap.createBitmap(mImageView.getDrawingCache());报空指针错误!!!!!!
解决办法:
在这之前添加下面的代码
mImageView.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); mImageView.layout(0, 0, mImageView.getMeasuredWidth(), mImageView.getMeasuredHeight()); mImageView.buildDrawingCache();
imageView.getBackground(),是获取它的背景图片;
在调用getDrawingCache的时候要注意下面2点:
-
在调用getDrawingCache()方法从ImageView对象获取图像之前,一定要调用setDrawingCacheEnabled(true)方法:
imageview.setDrawingCacheEnabled(true);
否则,无法从ImageView对象iv_photo中获取图像;
-
在调用getDrawingCache()方法从ImageView对象获取图像之后,一定要调用setDrawingCacheEnabled(false)方法:
imageview.setDrawingCacheEnabled(false);
以清空画图缓冲区,否则,下一次从ImageView对象iv_photo中获取的图像,还是原来的图像。