Java 如何获取图片';s每个像素的十六进制代码并另存为字符串
我试图用Java制作一个RPG游戏,但在构建关卡时遇到了一个问题。它没有得到正确的十六进制代码。下面是有问题的循环和开关语句:Java 如何获取图片';s每个像素的十六进制代码并另存为字符串,java,image,bufferedimage,hex,Java,Image,Bufferedimage,Hex,我试图用Java制作一个RPG游戏,但在构建关卡时遇到了一个问题。它没有得到正确的十六进制代码。下面是有问题的循环和开关语句: public void loadLevel(BufferedImage levelImage){ tiles = new int[levelImage.getWidth()][levelImage.getHeight()]; for (int y = 0; y < h; y++) { for (int x = 0; x < w
public void loadLevel(BufferedImage levelImage){
tiles = new int[levelImage.getWidth()][levelImage.getHeight()];
for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
Color c = new Color(levelImage.getRGB(x, y));
String h = String.format("&02x%02x%02x", c.getRed(),c.getGreen(),c.getBlue());
switch(h){
case "00ff00"://GRASS Tile - 1
tiles[x][y] = 1;
System.out.println("Found Grass");
break;
case "808080"://Stone -2
tiles[x][y] = 2;
System.out.println("Found STONE");
break;
case "894627"://Dirt -3
tiles[x][y] = 3;
break;
case "404040"://Rock -4
tiles[x][y] = 4;
break;
case "00b700"://Tree -5
tiles[x][y] = 5;
break;
case"000000"://Wall -6
tiles[x][y] = 6;
break;
default:
tiles[x][y] = 1;
System.out.println("Did not find anything");
System.out.println(h);
break;
}
public void加载级别(buffereImage级别图像){
tiles=newint[levelImage.getWidth()][levelImage.getHeight()];
对于(int y=0;y
现在,字符串被设置为
&02x0000
的一些变体,任何想法/修订都会非常有用!将&02x%02x%02x
更改为%02x%02x
。修复了Jesper的问题。那么,为什么在第一个十六进制数的格式字符串中使用&
而不是%
%02x而不是&02x%02x%02x
。哇……我不知道我怎么会错过了。非常感谢您指出这一点。这与问题(您现在已经解决了:-)没有太大关系,但有一个更简单的代码和更好的性能提示:不要转换为字符串,只需使用int h=levelImage.getRGB(x,y)&0x00FFFFFF
屏蔽RGB值,并开关(h){case 0x00ff00:
等,打开十六进制值。