[英]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.