我的应用程序显示不同比例的图像,内部(centerInside)imageView调整大小。我需要的是从ImageView创建包括背景的位图(在这种情况下为黑色)。
所以例如我有设备屏幕320x480,全屏imageView图像大小调整为280x480。我怎么能从它获得320x480位图?
在这个imageview的顶部,我有一些我不想包含在位图中的徽标或按钮,它们就像在顶层。我需要的只是位图,图像和某些边的黑色边框。
答案 0 :(得分:94)
您可以使用imageView的图像缓存。它会将整个视图渲染(缩放,与背景等边界)渲染到新的位图。
确保它已构建完毕。
imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();
屏幕上看到了你的位图。
答案 1 :(得分:58)
你试过了吗?
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
答案 2 :(得分:5)
在这里大声思考(在Java中使用图形技术的专业知识很少)也许这样的事情会起作用吗?:
ImageView iv = (ImageView)findViewById(R.id.imageview);
Bitmap bitmap = Bitmap.createBitmap(iv.getWidth(), iv.getHeight(), Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
iv.draw(canvas);
出于好奇,你想要完成什么?可能有一种更好的方法来实现你的目标,而不是你的想法。
答案 3 :(得分:1)
try {
photo.setImageURI(Uri.parse("Location");
BitmapDrawable drawable = (BitmapDrawable) photo.getDrawable();
Bitmap bitmap = drawable.getBitmap();
bitmap = Bitmap.createScaledBitmap(bitmap, 70, 70, true);
photo.setImageBitmap(bitmap);
} catch (Exception e) {
}
答案 4 :(得分:1)
这是一个有效的代码
imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(imageView.getDrawingCache());
答案 5 :(得分:0)
buildDrawingCache()
被弃用后,它就可以在Kotlin中使用
// convert imageView to bitmap
val bitmap = (imageViewId.getDrawable() as BitmapDrawable).getBitmap()
答案 6 :(得分:0)
在 Kotlin 中;
imageView.drawable?.let {
val mBitmap = (it as BitmapDrawable).bitmap
}