Использование PlayN image.getRgb()

Я пытаюсь понять, как использовать API image.getRgb(). для тестирования я просто копирую и показываю точное изображение, но не смог заставить его работать с кодом:

    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);
        }
    }

Я ожидаю, что приведенный выше код копирует попиксельно в буфер, а затем отображает точно такое же изображение на поверхности. Тем не менее, вот мое исходное изображение и изображение результата:

Исходное изображение введите здесь описание изображения

Изображение результата введите здесь описание изображения

Думаю, я неправильно понимаю API getRgb(), как правильно его использовать? Спасибо.


person mamamia    schedule 27.05.2012    source источник


Ответы (1)


Вы уверены, что не имеете в виду:

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

Это должно получить правильную координату x, y из буфера.

person AiTuDou    schedule 27.05.2012
comment
Не могу поверить, что я до сих пор делаю такие ошибки, большое спасибо! - person mamamia; 28.05.2012