【问题标题】:Java: Mapping 1d array to BitmapJava:将一维数组映射到位图
【发布时间】:2020-04-14 02:27:39
【问题描述】:

我有以下二维数组,其中包含 RGB 通道的颜色强度值。

// create a 2d array for colors
int[][] rgbColors = {
            {255, 0, 0}, //red
            {0, 255, 0}, //green
            {0, 0, 255}, //blue
        };

我还有另一个一维数组:

// Data array
int [] data = {0, 0, 0, 1, 1, 1, 2, 2, 2}

我想将data 数组重塑为3x3 Bitmap Image,以便所有 0 值都映射到红色,所有 1 值都映射到绿色,所有 2 值都映射到生成位图中的蓝色。换句话说,生成的位图将分别具有红色、绿色和蓝色的三行。颜色值在rgbColors 2D 数组中给出。实现这一目标的最有效方法是什么?

编辑:

我尝试了以下操作,但它不起作用并产生了一个空白图像。

bitmap = Bitmap.createBitmap(data, 3, 3, Bitmap.Config.ARGB_8888);

【问题讨论】:

    标签: java android


    【解决方案1】:

    阅读文档(我对 Android 完全没有专业知识),我认为将 data 数组更改为

        int[] data = {-65536,
        -65536,
        -65536,
        -16711936,
        -16711936,
        -16711936,
        -16776961,
        -16776961,
        -16776961
    };
    

    会起作用,但您需要阅读docs 以了解参数的含义。

    【讨论】:

    • 那行得通,我知道这些是 Bitmap 可以理解的颜色强度。你能告诉我这些值叫什么吗?我在哪里可以找到这种格式的颜色表?
    • @HaroonS.我不是专家,但这些是正式的 specs 并且值存在于此 Constants 部分中。
    猜你喜欢
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    相关资源
    最近更新 更多