gpt4 book ai didi

java - 在 Java 中使用缓冲图像

转载 作者:行者123 更新时间:2023-11-30 08:24:41 25 4
gpt4 key购买 nike

我可以读入图像并写入图像,图像看起来很完美。所以没关系。

我认为我的位移有困难。因为当我测试打印前 3 个 RGB int 值,然后测试打印 3 个 int 值时,它们没有相同的值?但是我再次运行程序,第一次打印的值和之前的第一次打印值一样吗?

好的,下面是我将值移出到红色、绿色和蓝色数组中的代码

int g=0;
for(int row=0; row<h; row++)
{
for(int col=0; col<w; col++)
{
redPixels[row][col] = ((RGBarray[g]>>16)&0xff);
greenPixels[row][col] = ((RGBarray[g]>>8)&0xff);
bluePixels[row][col] = (RGBarray[g]&0xff);
g++;
}
}

下面是将值位移回整数的代码...

for(int row=0; row<h; row++)
{
for(int col=0; col<w; col++)
{
int rgb = (redPixels[row][col] & 0xff) << 16 | (greenPixels[row][col] & 0xff) << 8 |(bluePixels[row][col] & 0xff);
bufferedImage.setRGB(col, row, rgb);
}
}

移位到数组之前的前 3 个 int 值:-16573912 -16573912 -16508119

位移回整数后的前 3 个 int 值:203304 203304 269097

但请记住,当我再次运行该程序时,会显示完全相同的值(在本例中为上述相同的输出)。并且还创建了准确的图像。我只是不确定位移前后的值是否不同?

希望这很清楚?谢谢

最佳答案

您的 RGB 值是 24 位 (3*8),但 java int 是 32 位。如果您查看十六进制值,区别应该更明显:

-16573912 = 0xFF031A28
203304 = 0x00031A28

关于java - 在 Java 中使用缓冲图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22799437/

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