【发布时间】:2014-04-02 00:31:09
【问题描述】:
我可以读取图像并写入图像,图像看起来很完美。所以没关系。
我认为我的位移有困难。因为当我测试打印前 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
但请记住,当我再次运行程序时,会显示完全相同的值(在本例中为上述相同的输出)。并且还创建了准确的图像。我只是不确定移位前后的值是否相同?
希望这很清楚吗? 谢谢
【问题讨论】:
标签: java rgb bufferedimage