Java 将彩色png布局图像中的图案读取到数组中?

Java 将彩色png布局图像中的图案读取到数组中?,java,arrays,bitmap,Java,Arrays,Bitmap,因此,我想读取图像,并用0-6自动填充我的int[]layout数组。整个图像为896(宽)x 992(高),每个磁贴为32x32像素大 每个磁贴上都有1px的边框,因此颜色为30x30像素大。 这是我到目前为止的java代码(只有Grid.class): }以下是一步一步的解决方案: 研究以下内容: javax.imageio.imageio.read(新文件(“filename.png”) java.awt.image.BufferedImage.getRGB(intx,inty) 加载并读

因此,我想读取图像,并用
0-6
自动填充我的
int[]layout
数组。整个图像为
896(宽)x 992(高)
,每个磁贴为
32x32像素

每个磁贴上都有1px的边框,因此颜色为
30x30像素
大。

这是我到目前为止的java代码(只有
Grid.class
):


}以下是一步一步的解决方案:

  • 研究以下内容:

    javax.imageio.imageio.read(新文件(“filename.png”)
    
    java.awt.image.BufferedImage.getRGB(intx,inty)

  • 加载并读取该图片。最好是从每16个像素获得一种颜色(具有32x32个平铺-因此从平铺中间读取是安全的)

  • 比较颜色是否与图案中的颜色匹配
  • 如果匹配,则写入您的
    布局[i][j]
    数组
  • 重复这个循环,直到你到达一张照片的末尾。(不要忘记在一个周期结束时
    i++;
    j++;
  • 你有一个结果。只要在28x31阵列中循环,就有868个操作,所以不要担心速度

  • 您还可以将数组初始化为
    layout=new int[28][31];
    而不需要大量的0。确切的问题是什么?太好了!我搜索了这个
    getRGB(int x,int y)
    !!谢谢:)
    #FFFFFF = 0 = black background
    #FF0000 = 1 = corner, rotated through 0° https://i.imgur.com/8H5PL63.png
    #FF8000 = 2 = corner, rotated through 90°
    #FFFF00 = 3 = corner, rotated through 180°
    #80FF00 = 4 = corner, rotated through 270°
    #00FF00 = 5 = pipe, rotated through 0° https://i.imgur.com/UA2z1QZ.png
    #00FF80 = 6 = pipe, rotated through 90°
    
    public class Grid {
    private static int[][] layout;
    
    public Grid() {
        layout = new int[][]{ //28x31
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},//5
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},//10
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},//15
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},//20
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},//25
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},//30
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
        };
    }