libjpeg学习3:turbojpeg试用

原创 2015年07月07日 21:29:44

turbojpeg针对ARM和X86对了优化,宣称其速度是libjpeg的2到4倍。下载其源码,值得称赞的地方是其例子,单元测试很到位。另外是它的注释,或者说是html说明文件,对于宏、函数都有详细的说明。本文就是参考源码的例子和html文档写的简单示例。由于只是试用,并无深入研究,只是在我的虚拟机里运行。对于性能测试,并未进行。

代码示例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <setjmp.h>

#include "jpeg-utils.h"

// jpeg库头文件必须放到stdio.h后面
#include "libjpeg/include/turbojpeg.h"


int tjpeg_header(unsigned char* jpeg_buffer, int jpeg_size, int* width, int* height, int* subsample, int* colorspace)
{
    tjhandle handle = NULL;

    handle = tjInitDecompress();
    tjDecompressHeader3(handle, jpeg_buffer, jpeg_size, width, height, subsample, colorspace);

    tjDestroy(handle);

    return 0;
}

int tjpeg2rgb(unsigned char* jpeg_buffer, int jpeg_size, unsigned char* rgb_buffer, int* size)
{
    tjhandle handle = NULL;
    int width, height, subsample, colorspace;
    int flags = 0;
    int pixelfmt = TJPF_RGB;

    handle = tjInitDecompress();
    tjDecompressHeader3(handle, jpeg_buffer, jpeg_size, &width, &height, &subsample, &colorspace);

    flags |= 0;
    tjDecompress2(handle, jpeg_buffer, jpeg_size, rgb_buffer, width, 0,
            height, pixelfmt, flags);

    tjDestroy(handle);

    return 0;
}

int trgb2jpeg(unsigned char* rgb_buffer, int width, int height, int quality, unsigned char** jpeg_buffer, unsigned long* jpeg_size)
{
    tjhandle handle = NULL;
    //unsigned long size=0;
    int flags = 0;
    int subsamp = TJSAMP_422;
    int pixelfmt = TJPF_RGB;

    handle=tjInitCompress();
    //size=tjBufSize(width, height, subsamp);
    tjCompress2(handle, rgb_buffer, width, 0, height, pixelfmt, jpeg_buffer, jpeg_size, subsamp,
            quality, flags);

    tjDestroy(handle);

    return 0;
}


李迟 2015.7.7


版权声明:本文为迟思堂主人李迟原创文章,如转载请注明出处,并附带原文超链接地址。用于商业用途请付稿费¥100/千字。谢谢。

相关文章推荐

libjpeg-turbo使用实例(编解码jpeg、jpg转bmp、bmp转jpg代码)

libjpeg-turbo库用于jpeg图像编解码,上一节说了编译过程:编译libjpeg-turbo 。现在说说jpeg的编码、解码使用方法。 Windows上GDI接口支持的都是位图格式(DDB\...
  • mfcing
  • mfcing
  • 2016年09月23日 22:12
  • 4760

windows7 64位机上,libjpeg-turbo的安装和使用

windows7 64位机上,libjpeg-turbo的安装和使用!

libjpeg-turbo的neon功能

libjpeg-turbo是对libjpeg的扩展,支持SIMD指令,如X86架构的MMX、SSE、SSE2、3DNOW,ARM架构的NEON,在对jpeg进行编码和解码的过程中能提高速度。在图形库C...
  • alien75
  • alien75
  • 2012年04月13日 15:41
  • 5820

libjpeg与turbo libjpeg的使用

LibJpeg作为常用开源库,已有很多相关介绍。
  • delltdk
  • delltdk
  • 2014年05月07日 20:56
  • 2377

libjpeg-turbo解压与压缩JPEG图像原理

libjpeg-turbo 相对于 libjpeg 性能有很大的提升,可以参考 https://bbs.archlinux.org/viewtopic.php?id=99147 libjpeg-tu...

android bitmap compress(图片压缩)

android bitmap compress android的照相功能随着手机硬件的发展,变得越来越强大,能够找出很高分辨率的图片。 有些场景中,需要照相并且上传到服务,但是由于图片的大小太大,...

使用libjpeg进行图片读取

1 简介libjpeg一个图片解码库,在项目中需要读入图片,但不想依赖opencv的接口,这时可以libjpeg完成解码。libjpeg有两个版本,一个时原装的libjpeg,另一个则是libjpeg...

jpeglib使用指南

您可以到www.ijg.org网站下载libjpeg的源码, IJG JPEG Library就是jpeg压缩库,是以源码的形式提供给软件开发人员的,当然在软件包里也有编译好的库文件,我们这里就只用到...

android 使用libjpeg-turbo将yuv2jpeg图像

要将yuv2jpeg图像则需要两个准备,一、准备libjpeg-turbo库,可以查看之前android 编译libjpeg-turbo文章,二、调用libjpeg-turbo代码,可以查看源码中的E...

turbojpeg tjDecompress 的解码

#include "../../../Core/Include/CompilerDefines.h" #include "../../../Core/Include/Utilities/Log.h" ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:libjpeg学习3:turbojpeg试用
举报原因:
原因补充:

(最多只允许输入30个字)