1

我正在创建图像压缩程序,我想将颜色从 RBG 转换为 YCbCr,我没有问题将图像提取为像素并从每个像素获取 RBG 信息,但是,我不知道如何将像素与新的 YCbCr 信息打包在一起以产生新图片。

我编写了代码来处理 RGB 信息并将其重新组合在一起,它看起来像这样:

private static int packPixel(int red, int green, int blue) {
   return (red << 16) | (green << 8) | blue;
}

public BufferedImage makeNewBufferedImage(short[][] ImageDataRed, short[][] ImageDataGreen, short[][] ImageDataBlue ) {
   int[] newBufferedImageData = new int[rows * cols];
   int index;
   for (int row = 0; row < rows; row++) {
       for (int col = 0; col < cols; col++) {
           index = (row * cols) + col;
           newBufferedImageData[index] = packPixel(ImageDataRed[row][col], ImageDataGreen[row][col], ImageDataBlue[row][col]);
       }
   }

我知道 YCbCr 拥有更多信息,但我不知道如何将它们打包在一起,也许有人可以帮助我?

4

1 回答 1

1

Java Advanced Imaging似乎支持 YCbCr。

于 2012-12-04T02:39:44.503 回答