Android图像处理,像素颜色和色调

Android图像处理,像素颜色和色调,android,bitmap,Android,Bitmap,我正在使用一个颜色托盘应用程序,我必须生成一种颜色的不同色调,并将其转换为其他颜色及其色调。 这是从位图中获取所有像素的代码 这里是我的位图 int width = mImage.getWidth(); int height = mImage.getHeight(); int[] pixels = new int[width * height]; mImage.getPixels(pixels, 0, width, 0, 0, wi

我正在使用一个颜色托盘应用程序,我必须生成一种颜色的不同色调,并将其转换为其他颜色及其色调。 这是从位图中获取所有像素的代码

这里是我的位图

        int width = mImage.getWidth();
        int height = mImage.getHeight();
        int[] pixels = new int[width * height];
        mImage.getPixels(pixels, 0, width, 0, 0, width, height);
您可以进一步查看这些链接,它们可能会告诉您如何生成阴影

问题:我得到的所有颜色都是整数值,比如-34454323。 我非常困惑如何找到给定的整数代码是某种纯色的阴影,或者它本身是纯色

另一个问题:是否有直接的方法将像素的色调和饱和度属性更改为某个目标像素


例如,将深蓝色像素转换为浅红色像素。

您可以使用BitmapShader,下面是Romain Guy关于它的一个很好的教程

之所以会出现这种奇怪的错误,是因为getPixels返回并数组为“压缩整数”——每个整数代表一个对象(请参阅完整文档)。int的每个8位分别是B、G、R颜色

如果你想要一个像素的RGB的精确值,你需要做如下的事情

// code untested
int R = (intcolor >> 16) & 0xff;
int G = (intcolor >> 8) & 0xff;
int B = intcolor & 0xff;

我可以通过这些方法直接获得RGB值int redValue=Color.red(像素);int blueValue=颜色。蓝色(像素);int greenValue=颜色。绿色(像素);问题是,我真的想得到像素最接近的纯颜色之一。例如,如果像素是纯黄色的某个变体,我如何知道它是黄色的变体。感谢您的链接,但Bitmapshader即将更改像素的亮度,我的问题是针对颜色及其色调的色调和饱和度。这并不全是关于亮度的,只有教程是关于亮度的,使用位图着色器,您还可以更改色调和饱和度,您也可以通过矩阵设置它们,请看这个片段ColorMatrix colorizerMatrix=new ColorMatrix();colorizerMatrix.设置饱和度(值);ColorMatrixColorFilter colorizerFilter=新的ColorMatrixColorFilter(colorizerMatrix);mBitmapDrawable.setColorFilter(colorizerFilter);