libjpeg学习3:turbojpeg试用
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试用相关推荐
- libjpeg学习2:内存篇
前面文章说到到libjpeg的使用示例,里面的例子实际上是文件的操作,即解压JPEG文件,因为libjpeg有对FILE操作的函数,所以代码直接用jpeg_stdio_src(&cinfo, ...
- libjpeg学习1:简单使用示例
libjpeg这个库主要用于处理jpeg数据,比如将RGB压缩成JPEG,或者将JPEG解压为RGB.其实早在4年前已经接触过,但一直没写过这方面的文章.后来想想还是有必要写出来,至少可以证明自己搞过 ...
- libjpeg用法linux压缩,libjpeg学习1:简单使用示例
#include #include #include #include #include #include #include // jpeg库头文件必须放到stdio.h后面 #include &qu ...
- elearning学习系统的试用心得
e-Learning系统的主要功能 应用场景 优点 缺点 制定培训计划 1.制定各个部门的年度培训计划和月度临时培训计划. 1.计划调整方便,通知广播容易. 因为展示培训计划的内容较少,还不能提出具体 ...
- deno学习一 安装试用几个问题解决
基本的依赖可以参考github 我的环境是centos 7 基本安装 需要golang 以及yarn安装 Protobuf 3 这是官方的方式,实际可以变通下 cd ~ wget https://gi ...
- 软件测试基础课程学习笔记4--测试用例设计方法技巧
一.测试用例设计工具 Xmind思维导图工具,下载地址:http://pan.baidu.com/s/1bncVXfT 二.常用的测试用例设计方法 测试用例设计方法总结下载地址:http://pan. ...
- libjpeg学习4:libjpeg-turbo之YUV
libjpeg-turbo支持直接从JPEG解压成YUV格式,或者反之.这也是我当初想研究它的一个动力. 看了头文件注释,它是支持YUV444(即宏TJSAMP_444),YUV422(即宏TJSAM ...
- QLoo graphql engine 学习二 基本试用(kubernetes)
已经测试过docker&& docker-compose 的运行模式,下面测试下kubernetes的运行模式 kubernetes 我使用docker for mac qloo 安装 ...
- 浅谈深度学习混合精度训练
↑ 点击蓝字 关注视学算法 作者丨Dreaming.O@知乎 来源丨https://zhuanlan.zhihu.com/p/103685761 编辑丨极市平台 本文主要记录下在学习和实际试用混合精度 ...
最新文章
- 409 Longest Palindrome
- 比利牛斯獒犬 flask web
- Linux下让进程在后台可靠运行的几种方法
- iOS的推送证书过期的处理
- 在C++中调用DLL中的函数
- 贷款审批到底会考核哪些内容?
- red hat安装宝塔_如何在几分钟内安装Red Hat Container Development Kit(CDK)
- C语言简单程序情话,给你一份程序员的“科技情话”,赶在双十一前脱单吧
- 【机器学习技术】高斯过程初探
- 面试准备每日五题:C++(六)——CC++、staticconstextern、sizeof strlen、指针引用、数组指针指针数组函数指针
- eclipse 统计代码行数
- (小米系统系列五)小米/红米国际版系统刷入小米钱包、小米公交、小米门禁卡
- 淘宝运营之:店铺信用分计算规则
- python自动化配置路由器_使用Python管理小米路由器
- HashMap遍历时移除元素
- 链游时代来临!1周12款游戏与公有区块链MagnaChain签约上链
- Kotlin 实战翻译 —— 仿微信图片选择开源库ImagePicker
- 青少年沉迷游戏得鱼教育老师告诉家长如何处理
- java主程序怎样调用子程序_主程序调用子程序使用( )指令。
- 【自学Java】Java语言特点
热门文章
- 首发骁龙898!小米12系列屏幕方案曝光:双曲面屏+全新封装工艺
- 恒大集团:网传《关于召开全国恒大财富投资人大会通知》系伪造
- 苹果任命软件主管凯文•林奇为“苹果汽车”项目负责人
- 华为回应“发射卫星抢占6G”:假消息
- 抖音内测网页版 网友:摸鱼党新的快乐来了
- iPhone 12还没出,iPhone 13开始了:将采用120Hz ProMotion显示屏
- 在公司群匿名吐槽后当场“掉马”?QQ回应:真这样程序猿要被祭天
- 这家公司把三星、联想、微软等7家公司给告了 侵犯其触摸屏专利
- 三星Galaxy Fold中国区发布会临时取消:推迟时间未定 彻查屏幕问题
- 迪士尼正式收购21世纪福克斯!网友:原来米老鼠才是灭霸…