0

我使用以下代码来提取图像的像素值。

    int[][] pixels = new int[w][h];

    for( int i = 0; i < w; i++ )
        for( int j = 0; j < h; j++ )
            pixels[i][j] = imgBuffer.getRGB( i, j );

现在我修改了像素值并绘制了新图形

    BufferedImage image=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
    for( int i = 0; i < w; i++ )
        for( int j = 0; j < h; j++ )
            image.setRGB( i, j,pixels[i][j] );

现在,当我尝试通过

    int[][] pixels1 = new int[w1][h1];

    for( int i = 0; i < w1; i++ )
        for( int j = 0; j < h1; j++ )
            pixels1[i][j] = imgBuffer1.getRGB( i, j );

这给了我全新的价值观

4

1 回答 1

0

你没有显示imgBuffer从哪里来imgBuffer1。它们是同一个对象,还是两个不同的对象引用内存中的同一个缓冲区,还是两个不同的对象引用完全不同的缓冲区?如果它们不指向内存中的同一个缓冲区,那么它们至少可以并且可能会产生不同的输出是有道理的。

此外,您是否尝试过进行简单的测试,例如使用纯色缓冲区(例如纯蓝色)作为输入并多次提取像素数据以查看它是否与输入不同?此外,如果它不同,它是否至少始终不同(在一种颜色和另一种颜色之间发生相同的变化,无论输入如何,相同的颜色总是第二次出现,等等)?

你的问题目前缺少的部分是你试图确定为什么会发生这种情况的过程——你已经尝试过什么来弄清楚发生了什么,结果是什么?

于 2013-10-02T19:08:28.970 回答