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

libjpeg学习3:turbojpeg试用相关推荐

  1. libjpeg学习2:内存篇

    前面文章说到到libjpeg的使用示例,里面的例子实际上是文件的操作,即解压JPEG文件,因为libjpeg有对FILE操作的函数,所以代码直接用jpeg_stdio_src(&cinfo, ...

  2. libjpeg学习1:简单使用示例

    libjpeg这个库主要用于处理jpeg数据,比如将RGB压缩成JPEG,或者将JPEG解压为RGB.其实早在4年前已经接触过,但一直没写过这方面的文章.后来想想还是有必要写出来,至少可以证明自己搞过 ...

  3. libjpeg用法linux压缩,libjpeg学习1:简单使用示例

    #include #include #include #include #include #include #include // jpeg库头文件必须放到stdio.h后面 #include &qu ...

  4. elearning学习系统的试用心得

    e-Learning系统的主要功能 应用场景 优点 缺点 制定培训计划 1.制定各个部门的年度培训计划和月度临时培训计划. 1.计划调整方便,通知广播容易. 因为展示培训计划的内容较少,还不能提出具体 ...

  5. deno学习一 安装试用几个问题解决

    基本的依赖可以参考github 我的环境是centos 7 基本安装 需要golang 以及yarn安装 Protobuf 3 这是官方的方式,实际可以变通下 cd ~ wget https://gi ...

  6. 软件测试基础课程学习笔记4--测试用例设计方法技巧

    一.测试用例设计工具 Xmind思维导图工具,下载地址:http://pan.baidu.com/s/1bncVXfT 二.常用的测试用例设计方法 测试用例设计方法总结下载地址:http://pan. ...

  7. libjpeg学习4:libjpeg-turbo之YUV

    libjpeg-turbo支持直接从JPEG解压成YUV格式,或者反之.这也是我当初想研究它的一个动力. 看了头文件注释,它是支持YUV444(即宏TJSAMP_444),YUV422(即宏TJSAM ...

  8. QLoo graphql engine 学习二 基本试用(kubernetes)

    已经测试过docker&& docker-compose 的运行模式,下面测试下kubernetes的运行模式 kubernetes 我使用docker for mac qloo 安装 ...

  9. 浅谈深度学习混合精度训练

    ↑ 点击蓝字 关注视学算法 作者丨Dreaming.O@知乎 来源丨https://zhuanlan.zhihu.com/p/103685761 编辑丨极市平台 本文主要记录下在学习和实际试用混合精度 ...

最新文章

  1. 409 Longest Palindrome
  2. 比利牛斯獒犬 flask web
  3. Linux下让进程在后台可靠运行的几种方法
  4. iOS的推送证书过期的处理
  5. 在C++中调用DLL中的函数
  6. 贷款审批到底会考核哪些内容?
  7. red hat安装宝塔_如何在几分钟内安装Red Hat Container Development Kit(CDK)
  8. C语言简单程序情话,给你一份程序员的“科技情话”,赶在双十一前脱单吧
  9. 【机器学习技术】高斯过程初探
  10. 面试准备每日五题:C++(六)——CC++、staticconstextern、sizeof strlen、指针引用、数组指针指针数组函数指针
  11. eclipse 统计代码行数
  12. (小米系统系列五)小米/红米国际版系统刷入小米钱包、小米公交、小米门禁卡
  13. 淘宝运营之:店铺信用分计算规则
  14. python自动化配置路由器_使用Python管理小米路由器
  15. HashMap遍历时移除元素
  16. 链游时代来临!1周12款游戏与公有区块链MagnaChain签约上链
  17. Kotlin 实战翻译 —— 仿微信图片选择开源库ImagePicker
  18. 青少年沉迷游戏得鱼教育老师告诉家长如何处理
  19. java主程序怎样调用子程序_主程序调用子程序使用( )指令。
  20. 【自学Java】Java语言特点

热门文章

  1. 首发骁龙898!小米12系列屏幕方案曝光:双曲面屏+全新封装工艺
  2. 恒大集团:网传《关于召开全国恒大财富投资人大会通知》系伪造
  3. 苹果任命软件主管凯文•林奇为“苹果汽车”项目负责人
  4. 华为回应“发射卫星抢占6G”:假消息
  5. 抖音内测网页版 网友:摸鱼党新的快乐来了
  6. iPhone 12还没出,iPhone 13开始了:将采用120Hz ProMotion显示屏
  7. 在公司群匿名吐槽后当场“掉马”?QQ回应:真这样程序猿要被祭天
  8. 这家公司把三星、联想、微软等7家公司给告了 侵犯其触摸屏专利
  9. 三星Galaxy Fold中国区发布会临时取消:推迟时间未定 彻查屏幕问题
  10. 迪士尼正式收购21世纪福克斯!网友:原来米老鼠才是灭霸…