用libjpeg库生成jpeg文件(灰度)
jpeg代码,buffer是传入的位图,每个点一个字节的亮度,顺序排列
C代码
int mkjpeg(int width,int height,char *buffer,char *filename)
{
struct jpeg_compress_struct jcs;
struct jpeg_error_mgr jem;
FILE *fp;
JSAMPROW row_pointer[1]; // 一行位图
int row_stride; // 每一行的字节数
jcs.err = jpeg_std_error(&jem);
jpeg_create_compress(&jcs);
fp = fopen(filename,"wb");
if (f==NULL)
{
return FALSE;
}
jpeg_stdio_dest(&jcs, fp);
jcs.image_width = width; // 位图的宽和高,单位为像素
jcs.image_height = height;
jcs.input_components = 1; // 在此为1,表示灰度图, 如果是彩色位图,则为3
jcs.in_color_space = JCS_GRAYSCALE;//JCS_GRAYSCALE表示灰度图,JCS_RGB表示彩色图像
jpeg_set_defaults(&jcs);
jpeg_set_quality (&jcs, 80, TRUE);
jpeg_start_compress(&jcs, TRUE);
while (jcs.next_scanline < jcs.image_height)
{
row_pointer[0] = buffer[jcs.next_scanline * width];
jpeg_write_scanlines(&jcs, row_pointer, 1);
}
jpeg_finish_compress(&jcs);
jpeg_destroy_compress(&jcs);
fclose(fp);
return TRUE;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。