Java 将2D数组值直接放入图像和从这些值生成像素然后放入图像之间的区别

Java 将2D数组值直接放入图像和从这些值生成像素然后放入图像之间的区别,java,awt,Java,Awt,我是数字图像处理领域的初学者。现在我正在编码从2D阵列中获取图像。。。我已经下载了这两个代码示例。。。当我使用第一张照片时,我得到的是正确的图像,但当我使用第二张照片时,我得到的处理图像与前一张相比亮度更高 请告诉我这些代码之间的区别,以及我应该参考哪些代码。。。我必须使用这个代码来获取我的研究论文结果 一, 二, 我使用的这些代码我只想知道它们之间的区别 g、 设置颜色新颜色c、c、c;和img.setRGBi,j,像素 使用浮点数作为颜色定义并将其视为整数?那很有趣。。。你确定这就是你想要做

我是数字图像处理领域的初学者。现在我正在编码从2D阵列中获取图像。。。我已经下载了这两个代码示例。。。当我使用第一张照片时,我得到的是正确的图像,但当我使用第二张照片时,我得到的处理图像与前一张相比亮度更高

请告诉我这些代码之间的区别,以及我应该参考哪些代码。。。我必须使用这个代码来获取我的研究论文结果

一,

二,

我使用的这些代码我只想知道它们之间的区别
g、 设置颜色新颜色c、c、c;和img.setRGBi,j,像素

使用浮点数作为颜色定义并将其视为整数?那很有趣。。。你确定这就是你想要做的吗?在第一种情况下,为什么你要测试并设置c>=greyRange,而你将永远不再使用它??顺便说一句,我使用的是局部对比度增强算法,因此我使用的是浮点数组。对于案例1。如果条件是无用的。。我已经删除了它…浮点数组的值在[0.0,1.0]范围内。。我认为应该这样做:c=Math.absgreyRange-1.0;
 public BufferedImage getImage(BufferedImage original, float paddedArray[][], int width, int height) {

        BufferedImage img = new BufferedImage(width, height, original.getType());
        for (int i = 0; i < width; i++) {
            for (int j = 0; j < height; j++) {
                int c = Math.round(paddedArray[i][j]);
                int pixel = c << 16 | c << 8 | c;
                img.setRGB(i, j, pixel);
            }
        }
        return img;
    }
public BufferedImage getImages(BufferedImage original, float paddedArray[][], int width, int height) {

    BufferedImage img = new BufferedImage(width, height, original.getType());
    Graphics2D g = (Graphics2D) img.getGraphics();
    for (int i = 0; i < width; i++) {
        for (int j = 0; j < height; j++) {
            int c = Math.round(paddedArray[i][j]);
            if (c >= greyRange) {
                c = greyRange - 1;
            }
            g.setColor(new Color(c, c, c));
            g.fillRect(i, j, 1, 1);
        }
    }
    return img;
}