Java 二值化后的图像是旋转的

Java 二值化后的图像是旋转的,java,binary,grayscale,Java,Binary,Grayscale,这是我将png图像转换为二进制图像形式的代码。虽然有时它会将一个图像转换为二进制图像形式,但有时它会将图像旋转到某个角度,然后将其转换为二进制图像形式。这里的缓冲图像是我要转换为二进制形式的输入png图像 public static byte[][] binarizeImage(BufferedImage bfImage){ final int THRESHOLD = 160; int height = bfImage.getHeight(); i

这是我将png图像转换为二进制图像形式的代码。虽然有时它会将一个图像转换为二进制图像形式,但有时它会将图像旋转到某个角度,然后将其转换为二进制图像形式。这里的缓冲图像是我要转换为二进制形式的输入png图像

public static byte[][] binarizeImage(BufferedImage bfImage){
        final int THRESHOLD = 160;
        int height = bfImage.getHeight();
        int width = bfImage.getWidth();
        byte[][] image = new byte[width][height];

        for(int i=0; i<width; i++){
            for(int j=0; j<height; j++){
                Color c = new Color(bfImage.getRGB(i,j));
                int red = c.getRed();
                int green = c.getGreen();
                int blue = c.getBlue();
                if(red<THRESHOLD && green<THRESHOLD && blue<THRESHOLD){
                    image[i][j] = 1;
                }else{
                    image[i][j] = 0;
                }
            }
        }
        return image;
    }
有人能告诉我这个问题吗?对于一些图像,它对其他图像有效。我正在使用getrgb函数


编辑:只是提高易读性。

从外观上看,您忘记了考虑图像每个像素至少有3个字节:R、G、B。那么宽度的大小不应该是*3吗?然后你会把3个不同的像素放在1或0。如果每个像素都没有足够的数据,这可能是旋转的原因。@MiltoxBeyond这不是问题。我已经试过使用它了。遗憾的是,我无法找到它发生的原因