从 Android L 中的 ImageView 获取位图

我想从.我使用了以下代码,但返回空值。如何从 中获得整体。BitmapImageViewgetDrawable()BitmapImageView

Bitmap bitmap;
if (mImageViewer.getDrawable() instanceof BitmapDrawable) {
    bitmap = ((BitmapDrawable) mImageViewer.getDrawable()).getBitmap();
} else {
    Drawable d = mImageViewer.getDrawable();
    bitmap = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    d.draw(canvas);
}
storeImage(bitmap,"final.jpeg");

答案 1

如果您只想从图像视图中获得位图,则以下代码可能适合您:-

Bitmap bm=((BitmapDrawable)imageView.getDrawable()).getBitmap();

尝试将图像放在所有可绘制的质量文件夹中(可绘制的 hdpi/可绘制的 ldpi 等)

可能是您使用的模拟器或设备具有不同的密度,并且正在尝试从另一个文件夹中提取图像。

如果您在映像中使用.png、.jpg或.gif以外的扩展,则可能无法识别其他扩展类型。http://developer.android.com/guide/topics/resources/drawable-resource.html


答案 2

根据这个答案,就这样做吧:

imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();

推荐