gpt4 book ai didi

java - 将图像转换为像素阵列,使用像素重新创建图像 - 尺寸减小。为什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:27 24 4
gpt4 key购买 nike

我将图像转换为像素数组。我将 RGB 值保存在三个单独的数组中。

然后,我尝试使用相同的值(无操作)创建图像。原始图像为 205kB,黑白图像为 121kB,彩色图像为 215kB 至 96kB。此外,亮度略有变化(亮度增加,整体对比度也增加)。这是什么原因造成的?

我已经尝试过彩色和黑白图像。结果是一样的。

此外,我在之前的输出图像 (96kB) 上运行了相同的代码,新的输出仍然是 96kB。

代码-


1)读取图片:

int width = img.getWidth(null);
int height = img.getHeight(null);

pixelR = new int[width * height];
pixelG = new int[width * height];
pixelB = new int[width * height];

int index=0;

int r, g, b, gray, rgb;

for(int i=0; i<width; i++) {
for (int j=0; j<height; j++) {
rgb = img.getRGB(i, j);

r = (rgb >> 16) & 0xFF;
g = (rgb >> 8) & 0xFF;
b = (rgb & 0xFF);

pixelR[index]=r;
pixelG[index]=g;
pixelB[index]=b;
index++;
}
}

2)写图片:

     BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

int index=0;
int val;
int r, g, b;

for (int i=0; i<width; i++) {
for (int j=0; j<height; j++) {

r=pixelR[index];
g=pixelG[index];
b=pixelB[index++];

Color newColor = new Color((int)r, (int)g, (int)b);
image.setRGB(i, j, newColor.getRGB());
}
}

File f = null;

try{
f = new File("<filepath>.jpg");
ImageIO.write(image, "jpg", f);
}catch(IOException e){
System.out.println("Error: "+e);
}
}

最佳答案

您可以尝试将压缩级别设置为不同的值,然后查看文件大小如何因之而有所不同。参见 Setting jpg compression level with ImageIO in Java了解如何做到这一点。

虽然没有解释亮度和对比度的变化。

关于java - 将图像转换为像素阵列,使用像素重新创建图像 - 尺寸减小。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48026180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com