如何从图像中选择像素,并减少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编程中该像素的不透明度的主要内容,如果未能解决你的问题,请参考以下文章

YUV图像处理

[Android - Kitkat ]以编程方式从 Android 的内置图库应用程序中获取/选择图像

如何从精灵图像中找到图像的像素位置[关闭]

如何从 OpenGL 中的帧缓冲区纹理中采样像素?

如何在 Android 中以编程方式将图像文件从图库复制到另一个文件夹

Xamarin Android - 从图库中选择图像并获取其路径