在Java中将数组转换为BufferedImage存在困难

3
我希望能够在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);

请查看这个链接,或许可以帮到你:https://dev59.com/vGDVa4cB1Zd3GeqPgLpR - m.aibin
1个回答

0

你把步幅变量写错了。 是这一行:

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

需要更改为:

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

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


为什么1是错误答案而100是正确答案? - BillRobertson42
步幅变量控制每行数组中有多少个元素。为什么? - Gergely Bacso
我对它的含义很好奇。 - BillRobertson42

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接