特定
ImageView image = R.findViewById(R.id.imageView); image.setImageBitmap(someBitmap);
是否可以检索位图?
Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
这将从 ImageView 获得 Bitmap . 但是,它与您设置的位图对象不同 . 这是一个新的 .
ImageView
Bitmap
imageView.buildDrawingCache(); Bitmap bitmap = imageView.getDrawingCache();
===编辑===
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);
写下面的代码
ImageView yourImageView = (ImageView) findViewById(R.id.yourImageView); Bitmap bitmap = ((BitmapDrawable)yourImageView.getDrawable()).getBitmap();
这段代码更好 .
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); imageView.setImageBitmap(imagenAndroid);
试试这段代码:
Bitmap bitmap; bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
6 回答
这将从
ImageView
获得Bitmap
. 但是,它与您设置的位图对象不同 . 这是一个新的 .===编辑===
写下面的代码
这段代码更好 .
获取图像位图的其他方法是这样做:
试试这段代码: