使用jpeglib编写图像标题数据

时间:2014-05-04 17:14:11

标签: c++ image jpeg

我想使用jpeglib编写JPEG图像的标题数据。不幸的是,我不确定我真正需要哪些标题数据。我相信: - 量化表 - 霍夫曼表 - 共享图像信息(我不确定它包含哪些数据,有人写了大约5个不可变字节)

我知道通常的标头大小应该是624字节。

我的代码如下:

 jpeg_mem_dest(&cinfo, &buffer, &bufferSize);
 cinfo.image_width = imageWidth;
 cinfo.image_height = imageHeight;
 cinfo.input_components = inputComponents;
 cinfo.in_color_space = JCS_RGB;

 jpeg_set_defaults(&cinfo);
 jpeg_set_quality(&cinfo, quality, false);

 jpeg_write_tables(&cinfo);
 jpeg_start_compress(&cinfo, false);
 headerSize = bufferSize;

如何只写表来自jpeglib doc部分“缩位数据流和多个图像”。 不幸的是,它只写入574个字节,并且在没有标题的情况下将写入的标题数据添加到图像数据时,在尝试再次解压缩时,它表示“JPEG数据流不包含图像”。

分析使用共享标头的原始文件我找到了以下标记:

找到的标记是:

 FFD8   // Start Of Image
 FFE0   // Application-specific
 FFFE   // Comment
 FFDB   // Define Quantization Table(s)
 FFDB   // Define Quantization Table(s)
 FFC4   // Define Huffman Table(s)

 FFC0   // Start Of Frame (Baseline DCT)

 MIP maps (4 mip maps):

 FFDA
 FFD9
 FFDA
 FFD9
 FFDA
 FFD9
 FFDA
 FFD9

描述取自 https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure

从原始图像中的评论我甚至知道原始的JPEG压缩库: 英特尔(R)JPEG库,版本1,5,4,36

重点是我希望获得格式背后的架构以准确写出所需的数据(显然缺少一些基本的图像头信息,否则它至少会找到我猜的JPEG图像)。 在阅读过程中,我总是将共享标题添加到一个JPEG图像的图像数据中。

0 个答案:

没有答案