簡體   English   中英

如何從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返回的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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM