C语言读取.jpg格式的图
时间: 2024-02-18 19:59:27 浏览: 28
在 C 语言中读取 .jpg 格式的图像需要使用第三方库来进行处理。其中比较常用的是 libjpeg 库。
以下是一个简单的使用 libjpeg 库读取 .jpg 图像的示例代码:
```
#include <stdio.h>
#include <jpeglib.h>
int main(int argc, char* argv[]) {
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
FILE* infile;
JSAMPARRAY buffer;
int row_stride;
if (argc != 2) {
fprintf(stderr, "Usage: %s <input file>\n", argv[0]);
return 1;
}
// 打开输入文件
if ((infile = fopen(argv[1], "rb")) == NULL) {
fprintf(stderr, "Can't open %s\n", argv[1]);
return 1;
}
// 初始化解压缩对象
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
jpeg_stdio_src(&cinfo, infile);
jpeg_read_header(&cinfo, TRUE);
jpeg_start_decompress(&cinfo);
// 读取图像数据
row_stride = cinfo.output_width * cinfo.output_components;
buffer = (*cinfo.mem->alloc_sarray)
((j_common_ptr) &cinfo, JPOOL_IMAGE, row_stride, 1);
while (cinfo.output_scanline < cinfo.output_height) {
jpeg_read_scanlines(&cinfo, buffer, 1);
// 在这里处理图像数据
}
// 关闭解压缩对象和输入文件
jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);
fclose(infile);
return 0;
}
```
在上面的代码中,我们首先使用 `fopen` 函数打开输入文件,然后使用 libjpeg 库的函数进行初始化和解压缩操作,最后通过 `jpeg_read_scanlines` 函数读取图像数据。
如果你想要将图像数据保存为另一个格式,可以使用其他的第三方库,比如 libpng 库。