用c实现将unsigned char数组里的数据保存为jpg文件
时间: 2023-12-10 14:37:10 浏览: 158
要将unsigned char数组里的数据保存为jpg文件,可以使用libjpeg库。下面是一个简单的C代码示例:
```
#include <stdio.h>
#include <jpeglib.h>
void write_jpeg_file(unsigned char *data, int width, int height, char *filename)
{
struct jpeg_compress_struct cinfo;
struct jpeg_error_mgr jerr;
FILE *outfile = fopen(filename, "wb");
if (!outfile) {
fprintf(stderr, "Can't open %s\n", filename);
return;
}
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_compress(&cinfo);
jpeg_stdio_dest(&cinfo, outfile);
cinfo.image_width = width;
cinfo.image_height = height;
cinfo.input_components = 3;
cinfo.in_color_space = JCS_RGB;
jpeg_set_defaults(&cinfo);
jpeg_start_compress(&cinfo, TRUE);
JSAMPROW row_pointer[1];
while (cinfo.next_scanline < cinfo.image_height) {
row_pointer[0] = & data[cinfo.next_scanline * width * 3];
jpeg_write_scanlines(&cinfo, row_pointer, 1);
}
jpeg_finish_compress(&cinfo);
fclose(outfile);
jpeg_destroy_compress(&cinfo);
}
int main() {
// 假设数据保存在data数组中,宽度为width,高度为height
unsigned char data[width * height * 3];
// 将数据保存为jpg文件
write_jpeg_file(data, width, height, "output.jpg");
return 0;
}
```
在这个示例中,我们定义了一个write_jpeg_file函数,用于将数据保存为jpg文件。函数接受四个参数:数据指针data,宽度width,高度height和文件名filename。在函数中,我们首先打开文件并初始化jpeg压缩器。然后,设置图像的宽度、高度、像素数据格式等参数。接着,我们逐行将像素数据写入文件中,最后关闭文件和压缩器。在main函数中,我们调用write_jpeg_file函数将数据保存为jpg文件。
阅读全文