libjpeg YUV转jpeg
时间: 2023-05-27 13:06:07 浏览: 116
YUV转JPG 程序
5星 · 资源好评率100%
libjpeg是一种用于压缩和解压缩JPEG图像格式的软件库。其中包含了一个函数库,可以用于将YUV格式的图像数据转换成JPEG格式的图像数据。
下面是一个使用libjpeg将YUV格式的图像数据转换成JPEG格式的示例代码:
```c
#include <stdio.h>
#include <jpeglib.h>
void yuv_to_jpeg(unsigned char* yuv_buf, int width, int height, int quality, char* outfilename)
{
// 初始化JPEG压缩结构体
struct jpeg_compress_struct cinfo;
struct jpeg_error_mgr jerr;
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_compress(&cinfo);
// 打开输出文件
FILE* outfile;
if ((outfile = fopen(outfilename, "wb")) == NULL) {
fprintf(stderr, "can't open %s\n", outfilename);
return;
}
jpeg_stdio_dest(&cinfo, outfile);
// 设置JPEG压缩参数
cinfo.image_width = width;
cinfo.image_height = height;
cinfo.input_components = 3;
cinfo.in_color_space = JCS_YCbCr;
jpeg_set_defaults(&cinfo);
jpeg_set_quality(&cinfo, quality, TRUE);
// 开始压缩
jpeg_start_compress(&cinfo, TRUE);
// 将YUV数据转换成JPEG数据并写入输出文件
JSAMPROW row_pointer[1];
int row_stride = width * 3;
while (cinfo.next_scanline < cinfo.image_height) {
row_pointer[0] = &yuv_buf[cinfo.next_scanline * row_stride];
jpeg_write_scanlines(&cinfo, row_pointer, 1);
}
// 压缩结束
jpeg_finish_compress(&cinfo);
// 释放压缩结构体
jpeg_destroy_compress(&cinfo);
// 关闭输出文件
fclose(outfile);
}
```
使用上面的示例代码,你可以将YUV格式的图像数据转换成JPEG格式的图像数据,并将其保存到文件中。
阅读全文