在Android L中从ImageView获取位图

我想从ImageView获取Bitmap 。 我已经使用下面的代码,但getDrawable()返回null。 如何从ImageView获取整个Bitmap

 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"); 

Solutions Collecting From Web of "在Android L中从ImageView获取位图"

尝试这个:

 BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable(); Bitmap bitmap = drawable.getBitmap(); 

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

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

如果你只是想从一个ImageView的位图下面的代码可能会为你工作: –

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

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

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

如果您在图片中使用的扩展名不是.png,.jpg或.gif,则可能无法识别其他扩展名types。 http://developer.android.com/guide/topics/resources/drawable-resource.html

如果你正在尝试从Glide加载的图像获取位图,那么这将帮助你

  Drawable dr = ((ImageView) imView).getDrawable(); Bitmap bmp = ((GlideBitmapDrawable)dr.getCurrent()).getBitmap(); 

拍摄ImagView的图片并将其转换为string发送到服务器

  ImageView ivImage1 = (ImageView ) findViewById(R.id.img_add1_send ); getStringImage( ( ( BitmapDrawable ) ivImage1.getDrawable( ) ).getBitmap( ) ), public String getStringImage(Bitmap bm){ ByteArrayOutputStream ba=new ByteArrayOutputStream( ); bm.compress( Bitmap.CompressFormat.PNG,90,ba ); byte[] by=ba.toByteArray(); String encod= Base64.encodeToString( by,Base64.DEFAULT ); return encod; }