利用libjpeg-turbo库压缩图像(RGB、YUV等)为jpg

libjpeg-turbo是libjpeg的高性能版本,通过SIMD指令提升JPEG编解码速度。文章介绍了如何使用libjpeg-turbo API从内存缓冲区中的RGB图像进行压缩,并将结果写入JPEG文件。尽管库提供了直接压缩YUV数据的接口,但由于作者遇到的问题,选择了先转换为RGB再进行压缩。
摘要由CSDN通过智能技术生成

简介

libjpeg-turbo是libjpeg的升级版,它 的价值是利用SIMD指令集,加速了编解码过程。官网上的介绍中提到某个案例中从原来的0.3左右降低到0.1,时间只有原来的1/3,在我的工程中,时间减少到原来LibJpeg的一半左右。而它的使用与之前的LibJpeg完全相同,只是添加完善了部分功能,完全可以直接替换,使用很方便。

代码:(这是我封装的一个函数,直接使用的turbo API实现,功能是从内存buffer中获取原始rgb图像,经libjpeg-turbo压缩输出,然后写入一个jpg数据流文件,若要得到压缩码流做其它用处,可直接从输出outjpg_buf中取即可):

#include "turbojpeg.h"

int tj_CompressFromMem(void* fp_jpg,uchar* rgb_buffer,int quality)
{
    tjhandle handle = NULL;
    int flags = 0;
    int pad = 4; //字节对齐
    int subsamp = TJSAMP_422;
    int pixelfmt = TJPF_RGB;
    /*创建一个turbojpeg句柄*/
    handle=tjInitCompress();
    if (NULL == handle){
        return -1;
    }

    uchar *outjpg_buf=NULL;
    unsigned long outjpg_size;

    /*压缩*/
    //int 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值