Java native interface 试图通过JNI将原始图像数据读入Java

Java native interface 试图通过JNI将原始图像数据读入Java,java-native-interface,bufferedimage,Java Native Interface,Bufferedimage,我使用JNI以以下格式获取原始图像数据: 图像数据以每像素32位的数据格式返回,线性阵列从图像的左上角到右下角依次排列,每行从左到右。每个像素的上8位为alpha通道,下8位为蓝色通道,因此像素的位为ARGB,从最高有效到最低有效,每个通道8位。你必须在某个时候把数据放回去 DATA32格式本质上是C中的无符号整数 因此,我获取一个int[]数组,然后尝试通过 int w = 1920; int h = 1200; BufferedImage b

我使用JNI以以下格式获取原始图像数据:

图像数据以每像素32位的数据格式返回,线性阵列从图像的左上角到右下角依次排列,每行从左到右。每个像素的上8位为alpha通道,下8位为蓝色通道,因此像素的位为ARGB,从最高有效到最低有效,每个通道8位。你必须在某个时候把数据放回去

DATA32格式本质上是C中的无符号整数

因此,我获取一个int[]数组,然后尝试通过

        int w = 1920;
        int h = 1200;

        BufferedImage b = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); 


        int[] f = (new Capture()).capture();
        for(int i = 0; i < f.length; i++){;
                b.setRGB(x, y, f[i]);
        }
在我的C代码中,使用带有api的imlib2库,我是个白痴

这只是一个bug

我忘了包括我如何计算上面的x,y

基本上我用的是

 int x = i%w;
 int y = i/h;
在for循环中,这是错误的。应该是

 int x = i%w;
 int y = i/w;
真不敢相信我犯了这个愚蠢的错误

 int x = i%w;
 int y = i/w;