如何从 libgdx 中的像素图中获取每个像素的 int 值

How to get int values for each pixel from a pixmap in libgdx

我正在尝试打开 PNG 文件并显示每个像素的值。

Pixmap pixmap = new Pixmap(new FileHandle("images/Laby0.png"));

int widthPixmap = pixmap.getWidth();
int heightPixmap = pixmap.getHeight();

for(int y=0; y < heightPixmap; y++){
    for(int x=0; x < widthPixmap; x++){
        int color = pixmap.getPixel(x, y);
        System.out.println("X : "+ x + " y : " + y + " color = " +color);
    }
}

PGN文件只有一些白色、黑色和灰度级,但输出的值是-256和-1!

为什么不给出正值?

pixmap.getPixel 返回的颜色是 32 位 RGBA 压缩整数。但是 Java 使用有符号整数。如果 R 分量大于 255 中的 127,则第一位将为 1,这意味着整个 32 位数字的带符号解释将为负数。

反正没关系,因为单一的数字表示作为颜色是无法理解的。您可能希望将其转换为十六进制,以便阅读并理解它:

String hexColor = Integer.toHexString(color);

如果您想将单独的组件读取为从 0 到 255 的数字,您可以屏蔽掉您想要的部分并将感兴趣的 8 位移动到 32 位的最低有效部分:

int red = color >>> 24;
int green = (color & 0xFF0000) >>> 16;
int blue = (color & 0xFF00) >>> 8;
int alpha = color & 0xFF;