gpt4 book ai didi

c++ - 如何检查 jpeg 是 RGB 还是 CMYK 格式?

转载 作者:可可西里 更新时间:2023-11-01 11:39:08 32 4
gpt4 key购买 nike

我正在使用 C++、GDI+、WINDOWS。如何判断一个jpeg是RGB还是CMYK?

最佳答案

如果您使用 IJG libjpeg 库,您可以打开 JPEG 文件,读取文件头,看看它是灰度(单色)、RGB 还是 CMYK。 (实际上,有几个免费的 JPEG 库,但 IJG libjpeg 可能是最常用的。)您可以在以下位置找到 libjpeg 源:

http://www.ijg.org/files/jpegsrc.v8c.tar.gz

如何阅读 header 的大致示例如下:

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);

关于c++ - 如何检查 jpeg 是 RGB 还是 CMYK 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4487739/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com