【问题标题】:Android Image Processing,Pixel colors and shadesAndroid 图像处理,像素颜色和阴影
【发布时间】:2013-07-05 21:56:23
【问题描述】:

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

这里的 mImage 是我的位图。

        int width = mImage.getWidth();
        int height = mImage.getHeight();
        int[] pixels = new int[width * height];
        mImage.getPixels(pixels, 0, width, 0, 0, width, height);

您可以进一步查看此链接,该链接可能会告诉您如何生成阴影。

问题:我得到了整数值中的所有颜色,例如 -34454323 。 我很困惑如何找到给定的整数代码是某种纯色的阴影或本身就是纯色。

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

就像将深蓝色像素转换为浅红色像素。

【问题讨论】:

    标签: android bitmap


    【解决方案1】:

    您可以使用 BitmapShader,这是来自 Romain Guy 的一个很好的教程 http://www.curious-creature.org/2012/12/13/android-recipe-2-fun-with-shaders/

    【讨论】:

    • 感谢您的链接,但 Bitmapshader 即将改变像素的亮度,我的问题实际上是针对颜色及其阴影的色相和饱和度。
    • 不是所有关于亮度的,只有教程是关于亮度的,使用位图着色器你也可以改变色调和饱和度,你也可以通过矩阵来设置它们,看看这个 sn-p ColorMatrix colorizerMatrix = new ColorMatrix(); colorizerMatrix.setSaturation(值); ColorMatrixColorFilter colorizerFilter = new ColorMatrixColorFilter(colorizerMatrix); mBitmapDrawable.setColorFilter(colorizerFilter);
    【解决方案2】:

    出现这种奇怪错误的原因是 getPixels 返回和数组“打包整数” - 每个代表一个 Color 对象(请参阅完整文档 here)。 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(pixel); int blueValue = Color.blue(像素); int greenValue = Color.green(像素);问题是,我真的很想得到像素中最接近的纯色之一。例如,如果像素是纯黄色的某种变体,那么我怎么知道它是黄色的变体。
    猜你喜欢
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2011-07-18
    • 2012-05-03
    • 2017-07-26
    • 2015-07-14
    • 2017-07-09
    相关资源
    最近更新 更多