简体   繁体   English

Java Bufferedimage setRgb getRgb,2个不同的结果

[英]Java Bufferedimage setRgb getRgb, 2 different results

i´m trying to convert a image into a matrix and convert it back, but the 2 pictures are different: convert it into a matrix: 我正在尝试将图像转换为矩阵并将其转换回来,但是这两张图片是不同的:将其转换为矩阵:

 public int[][] getMatrixOfImage(BufferedImage bufferedImage) {
    int width = bufferedImage.getWidth(null);
    int height = bufferedImage.getHeight(null);
    int[][] pixels = new int[width][height];
    for (int i = 0; i < width; i++) {
        for (int j = 0; j < height; j++) {
            pixels[i][j] = bufferedImage.getRGB(i, j);
        }
    }

    return pixels;
}

and convert it back into a bufferedImage: 并将其转换回bufferedImage:

   public BufferedImage matrixToBufferedImage(int[][] matrix) {
    int width=matrix[0].length;
    int height=matrix.length;
    BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB_PRE);

    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix[0].length; j++) {

            int pixel=matrix[i][j] <<24|matrix[i][j] <<16|matrix[i][j]<<8|matrix[i][j] ;
            bufferedImage.setRGB(i, j, pixel);
        }
    }
    return bufferedImage;

}

with this result: 结果如下:

http://img59.imageshack.us/img59/5464/mt8a.png http://img59.imageshack.us/img59/5464/mt8a.png

Thanks! 谢谢!

Why do you do 你为什么这样做

int pixel=matrix[i][j] <<24|matrix[i][j] <<16|matrix[i][j]<<8|matrix[i][j];

instead of just 而不仅仅是

int pixel=matrix[i][j];

?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM