我想使用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图像的图像数据中。