如何更改位图的不透明度?
我有一个位图:
Bitmap bitmap = BitmapFactory.decodeFile("some/arbitrary/path/image.jpg");
但我不打算向用户显示图像。我希望 alpha 是 100(满分 255 分)。如果这是不可能的,我可以设置 的不透明度吗?Bitmap
我有一个位图:
Bitmap bitmap = BitmapFactory.decodeFile("some/arbitrary/path/image.jpg");
但我不打算向用户显示图像。我希望 alpha 是 100(满分 255 分)。如果这是不可能的,我可以设置 的不透明度吗?Bitmap
据我所知,不能在位图本身上设置不透明度或其他颜色滤镜。使用图像时,您需要设置 alpha:
如果您使用的是 ImageView,则有 ImageView.setAlpha()。
如果您使用的是 Canvas,则需要使用 Paint.setAlpha():
Paint paint = new Paint();
paint.setAlpha(100);
canvas.drawBitmap(bitmap, src, dst, paint);
此外,结合WarrenFaith的答案,如果您要在需要可绘制对象的地方使用位图,则可以使用BitmapDrawable.setAlpha()。
您也可以尝试位图可绘制而不是 .这是否对您有用取决于您使用位图的方式...Bitmap
编辑
正如一位评论者问他如何使用alpha存储位图时,这里有一些代码:
// lets create a new empty bitmap
Bitmap newBitmap = Bitmap.createBitmap(originalBitmap.getWidth(), originalBitmap.getHeight(), Bitmap.Config.ARGB_8888);
// create a canvas where we can draw on
Canvas canvas = new Canvas(newBitmap);
// create a paint instance with alpha
Paint alphaPaint = new Paint();
alphaPaint.setAlpha(42);
// now lets draw using alphaPaint instance
canvas.drawBitmap(originalBitmap, 0, 0, alphaPaint);
// now lets store the bitmap to a file - the canvas has drawn on the newBitmap, so we can just store that one
// please add stream handling with try/catch blocks
FileOutputStream fos = new FileOutputStream(new File("/awesome/path/to/bitmap.png"));
newBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);