难以在java中将数组转换为bufferedimage

时间:2015-12-02 17:06:55

标签: java bufferedimage

我想在Java中逐个像素地操作图像,所以我设置了一个带有我的颜色的一维列表。然后我将其转换为缓冲图像,但像素都是错误的。

所以我把它简化为下面的绝对基础知识。在我看来,这应该是一个正方形,左半部分为蓝色,右侧为黑色。相反,它给出了蓝色和黑色的斜条纹。有关正在发生的事情的任何想法吗?

   private void create(){
        int w = 100;
        int h = 100;
        int blue;
        int[] pix = new int[w * h];
        int index = 0;
        for (int y = 0; y < h; y++) {
            for (int x = 0; x < w; x++) {
              if (x<50) {blue = 255;} 
              else blue=0;
              pix[index++] =  blue;
            }
        }
       image = new BufferedImage(100,100, BufferedImage.TYPE_INT_RGB);
       image.setRGB(0, 0, 100, 100, pix, 0, 1);

1 个答案:

答案 0 :(得分:0)

你的步幅变量错了。这一行:

image.setRGB(0, 0, 100, 100, pix, 0, 1);

需要改为:

image.setRGB(0, 0, 100, 100, pix, 0, 100);

有一些小改动可以提高可读性,但你可以处理这些。上述更改将解决您询问的问题。