Respuestas:
Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
image.getDrawable()realmente puede ser lanzado a BitmapDrawable(para evitar IllegalCastExceptions). Si, por ejemplo, usa capas en su imagen, este fragmento será ligeramente diferente:Bitmap bitmap = ((BitmapDrawable)((LayerDrawable)image.getDrawable()).getDrawable(0)).getBitmap();
ImageViewse establece la imagen en URI? imageView.setImageUri()
Esto te conseguirá una Bitmapde la ImageView. Sin embargo, no es el mismo objeto de mapa de bits que ha establecido. Es uno nuevo.
imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();
=== EDITAR ===
imageView.setDrawingCacheEnabled(true);
imageView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
imageView.layout(0, 0,
imageView.getMeasuredWidth(), imageView.getMeasuredHeight());
imageView.buildDrawingCache(true);
Bitmap bitmap = Bitmap.createBitmap(imageView.getDrawingCache());
imageView.setDrawingCacheEnabled(false);
Bitmap bmap = Bitmap.createBitmap(mImageView.getDrawingCache());
Escribe debajo del código
ImageView yourImageView = (ImageView) findViewById(R.id.yourImageView);
Bitmap bitmap = ((BitmapDrawable)yourImageView.getDrawable()).getBitmap();
Para aquellos que están buscando Kotlinuna solución para llegar Bitmapa ImageView.
var bitmap = (image.drawable as BitmapDrawable).bitmap
Este código es mejor
public static byte[] getByteArrayFromImageView(ImageView imageView)
{
BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageView.getDrawable());
Bitmap bitmap;
if(bitmapDrawable==null){
imageView.buildDrawingCache();
bitmap = imageView.getDrawingCache();
imageView.buildDrawingCache(false);
}else
{
bitmap = bitmapDrawable .getBitmap();
}
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
return stream.toByteArray();
}
Bitmap imagenAndroid = BitmapFactory.decodeResource(getResources(),R.drawable.jellybean_statue);
Otra forma de obtener un mapa de bits de una imagen es hacer esto:
Bitmap imagenAndroid = BitmapFactory.decodeResource(getResources(),R.drawable.jellybean_statue);
imageView.setImageBitmap(imagenAndroid);
prueba este código:
Bitmap bitmap;
bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();