您的位置:首页 > 其它

利用libJpeg库实现将像素数据压缩至内存中

2012-12-04 16:00 295 查看
解压的文章来源自利用libjpeg8解压内存中的jpeg图片详解,感谢作者xieqi0793,使用本文的函数,请确保自己安装了libJPEG8库,如果没有,请点击此处下载该版本

以下为压缩的函数

//用于将像素信息以jpeg的形式压缩至内存中
int SC_jpgRes::jpeg_compress(SCUCHAR *inbuf, SCUCHAR *outbuf,uLongf *outSize)
{
int jpegWidth = jpeg的宽度;
int jpegHeight = jpeg的高度;
//开始进行jpg的数据写入
struct jpeg_compress_struct toWriteCinfo;
struct jpeg_error_mgr jerr;
JSAMPROW row_pointer[1];
int row_stride;

toWriteCinfo.err = jpeg_std_error(&jerr);
jpeg_create_compress(&toWriteCinfo);
//确定要用于输出压缩的jpeg的数据空间
jpeg_mem_dest(&toWriteCinfo, &outbuf, outSize);

toWriteCinfo.image_width = jpegWidth;
toWriteCinfo.image_height = jpegHeight;
toWriteCinfo.input_components = 3;
toWriteCinfo.in_color_space = JCS_RGB;

jpeg_set_defaults(&toWriteCinfo);
jpeg_set_quality(&toWriteCinfo, 100, true);
jpeg_start_compress(&toWriteCinfo,TRUE);
row_stride = jpegWidth * 3;
while(toWriteCinfo.next_scanline < toWriteCinfo.jpegHeight)
{
row_pointer[0] = & inbuf[toWriteCinfo.next_scanline * row_stride];
(void)jpeg_write_scanlines(&toWriteCinfo, row_pointer, 1);
}
jpeg_finish_compress(&toWriteCinfo);
jpeg_destroy_compress(&toWriteCinfo);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  libjpeg 图片处理