java - 在 Java 中使用 BufferedImage

标签 java rgb bufferedimage

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

我认为我在位转换方面遇到了困难。因为当我测试打印前 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 中使用 BufferedImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22799437/

相关文章:

security - 在哪里可以下载适用于任何浏览器的 JRE 7u5 插件?

java - 将青色的整数颜色转换为 RGB 时遇到问题

Python Pil 将 GreyScale Tif 转换为 RGB

android - Android 中的缓冲图像

java - 调整 TYPE_CUSTOM BufferedImages 的大小?

java - HTTP 状态 500 - 数据库访问异常 : Connection Pool - Servlet Tomcat - MySQL

java - 如何根据ViewPager中当前的ImageView更新父Activity中的TextView

java - Tomcat servlet-api.jar问题

PHP int 到唯一的 rgb 颜色

java - 在 Java 中绘制像素最快的方法是什么