我使用的是c ++,gdi +,WINDOWS。 如何检查一个JPEG是RGB还是CMYK?
如果使用IJG libjpeg库,则可以打开JPEG文件,读取标题并查看它是灰度(单色),RGB还是CMYK。 (实际上,有几个免费的JPEG库,但是IJG libjpeg可能是最常用的。)您可以在以下位置找到libjpeg源代码:
http://www.ijg.org/files/jpegsrc.v8c.tar.gz
如何阅读标题的大致例子是这样的:
struct jpeg_decompress_struct dinfo; FILE* file = fopen(fname, "r"); /* Step 1: allocate and initialize JPEG decompression object */ jpeg_create_decompress(&dinfo); /* Step 2: specify data source (eg, a file) */ jpeg_stdio_src(&dinfo, file); /* Step 3: read file parameters with jpeg_read_header() */ (void) jpeg_read_header(dinfo, TRUE); /* Step 4: set parameters for decompression * In this example, we don't need to change any of the * defaults set by jpeg_read_header(), so we do nothing here. */ if (dinfo->jpeg_color_space == JCS_CMYK || dinfo->jpeg_color_space == JCS_YCCK) { // CMYK } else if (dinfo->jpeg_color_space == JCS_RGB || dinfo->jpeg_color_space == JCS_YCbCr) { // RGB } else if (dinfo->jpeg_color_space == JCS_GRAYSCALE) { // Grayscale } else { ERREXIT(dinfo, JERR_CONVERSION_NOTIMPL); // error condition here... } /* You can skip the other steps involved in decompressing an image */ /* Step 8: Release JPEG decompression object */ jpeg_destroy_decompress(dinfo);