如何从图像中选择像素,并减少Android编程中该像素的不透明度
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从图像中选择像素,并减少Android编程中该像素的不透明度相关的知识,希望对你有一定的参考价值。
我想从在“图像视图”中显示的图像中选择一个像素,然后更改同一像素的不透明度,而不更改其余图像像素的不透明度。例如,我选择一个位置x = 50且y = 70的点,而我只想在该点改变不透明度,而不希望在其他地方改变不透明度。如何做到这一点?
答案
这是我设法做的:
// Decode the bitmap resource and make sure it's mutable.
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inMutable = true;
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.black, opts);
imv.setImageBitmap(bm);
imv.setOnTouchListener((v, event) -> {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
int x = (int) event.getX();
int y = (int) event.getY();
// Get the color of the touched pixel and change only the alpha component.
int color = bm.getPixel(x, y);
int alpha = color >>> 24;
alpha /= 2; // Alpha will be divided by two in the final color.
color = color & 0xFFFFFF | alpha << 24;
// Change the pixel color on the bitmap and update the ImageView.
bm.setPixel(x, y, color);
imv.setImageBitmap(bm);
imv.invalidate();
return true;
}
return false;
});
比您所要求的要多,但我需要对其进行测试。单击ImageView时,单击的像素的不透明度(alpha)减半。
由于屏幕密度非常高,因此在大多数手机上几乎几乎无法察觉。
以上是关于如何从图像中选择像素,并减少Android编程中该像素的不透明度的主要内容,如果未能解决你的问题,请参考以下文章
[Android - Kitkat ]以编程方式从 Android 的内置图库应用程序中获取/选择图像