C ++。从字节数组中获取RGB

时间:2014-05-25 07:08:38

标签: c++ c file jpeg

我已将JPEG格式读入char数组

char* FileName = "NewI.jpg";
FILE* ImageFile = fopen(FileName, "rb");
if (!ImageFile) {
    return -1;
}
fseek(ImageFile, 0, SEEK_END);
unsigned long int FileLength = ftell(ImageFile);
fseek(ImageFile, 0, SEEK_SET);
char* Bytes = (char*)malloc(FileLength * sizeof(char));
fread(Bytes, FileLength, sizeof(unsigned char), ImageFile);
fclose(ImageFile);

如何为每个像素获取RGB?

1 个答案:

答案 0 :(得分:1)

此评论太长,无法发表评论,但仅作为评论。

您遇到的问题是JPEG文件中的原始值与RGB值之间存在一系列冗长的步骤。

总结一下:

  1. 霍夫曼解码
  2. 运行长度解码
  3. 逆量化
  4. 保留离散余弦变换
  5. 上采样
  6. 从YCbCr色彩空间转换为RGB
  7. 对于渐进式和顺序JPEG流,必须以不同方式处理第一步。

    除非您想进行大量开发,否则您需要使用库来为您执行这些步骤(如前所述)。读取JPEG需要位级编程和绝对完美。处理中的一位错误将完全解除解码。