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

解压的文章来源自利用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;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值