1

我试图弄清楚如何使用'image.getRgb()' API。为了测试,我只是复制并显示了一个精确的图像,但无法让它与代码一起工作:

    int picWidth = (int) image.width();
    int picHeight = (int) image.height();
    buf = new int[picWidth * picHeight];

    image.getRgb(0, 0, picWidth, picHeight, buf, 0, picWidth);
    int color = 0;
    for(int y=0; y < picHeight; y ++) {
        for(int x=0; x < picWidth; x++) {
            color = buf[x*y];
            layer.surface().setFillColor(color);
            layer.surface().fillRect(x,y, 1, 1);
        }
    }

我期望上面的代码是逐像素复制到缓冲区,然后在表面上显示完全相同的图像。但是,这是我的原始图片和结果图片:

原始图像 在此处输入图像描述

结果图片 在此处输入图像描述

我想我误解了 getRgb() API,正确的使用方法是什么?谢谢。

4

1 回答 1

4

你确定你不是说:

color = buf[x + (y * width)];

那应该从缓冲区中获得正确的 x, y 坐标。

于 2012-05-27T11:11:35.967 回答