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

libjpeg-turbolibjpeg的区别 阅读详情

libjpeg-turbo库用于jpeg图像编解码,上一节说了编译过程:编译libjpeg-turbo 。现在说说jpeg的编码、解码使用方法。

Windows上GDI接口支持的都是位图格式(DDB\DIB)图像,这里只说bmp编码成jpeg格式图片并保存到本地和jpeg解码成bmp格式并保存到本地。

bmp转jpeg

int Bmp2Jpeg_Compress(void* lpBmpBuffer, int nWidth, int nHeight, OUT void** ppJpegBuffer, OUT unsigned long* pOutSize)
{
	jpeg_compress_struct toWriteInfo;
	jpeg_error_mgr errorMgr;
	toWriteInfo.err = jpeg_std_error(&errorMgr);
	//注册失败的回调函数
	toWriteInfo.err->error_exit = error_exit;
	jpeg_create_compress(&toWriteInfo);
	//保存压缩后的图片
	//FILE* fp = NULL;
	//_wfopen_s(&fp, L"c:\\output.jpg", L"wb+");
	//jpeg_stdio_dest(&toWriteInfo, fp);
	//确定要用于输出压缩的jpeg的数据空间
	jpeg_mem_dest(&toWriteInfo, (unsigned char**)ppJpegBuffer, pOutSize);
	toWriteInfo.image_width = nWidth;
	toWriteInfo.image_height = nHeight;
	toWriteInfo.jpeg_width = nWidth / 2;
	toWriteInfo.jpeg_height = nHeight / 2;
	toWriteInfo.input_components = 4;// 在此为1,表示灰度图, 如果是彩色位图,则为4
	toWriteInfo.in_color_space = JCS_EXT_BGRA; //JCS_GRAYSCALE表示灰度图,JCS_RGB表示彩色图像 
	jpeg_set_defaults(&toWriteInfo);
	jpeg_set_quality(&toWriteInfo, 100, TRUE);	//设置压缩质量100表示100%
	jpeg_start_compress(&toWriteInfo, TRUE);
	int nRowStride = nWidth*4;	// 如果不是索引图,此处需要乘以4
	JSAMPROW row_pointer[1];	// 一行位图
	while (toWriteInfo.next_scanline < toWriteInfo.image_height)
	{
		row_pointer[0] = (JSAMPROW)((unsigned char*)lpBmpBuffer + t
libjpeg-turbo使用教程 图像保存为jpg文件。libjpeg-turbo的入门教程。 阅读详情

相关推荐

如何更快的操作jpeg图片?

如何更快的操作jpeg图片? 如何更快的操作jpeg图片? 1. 还是先了解一下jpg格式吧 2. 搜索资料中 3. 编译和使用libjpeg-turbo 4. 测试和进一步的优化 其他资料: 收到一个任务,加载jpeg图片时间有点慢,让优化其加载速度。我也仅仅是知道jpg是众多图片格式的一种啊,如何优化呢?挠头中。。。。。。 1. 还是先了解一下jpg格式吧 .j...

onlyshi的专栏 956

jpeg入门学习笔记

#include #include "jpeglib.h" #include int main(int argc,char **argv) { struct jpeg_decompress_struct cinfo; struct jpeg_error_mgr jerr; FILE * infile; cinfo.err=jpeg_std_error(&jer

ap105638的专栏 1303

libjpeg-turbo环境配置

libjpeg-turbo环境配置

weixin_44696997的博客 1216

海思平台交叉编译·libjpeg-turbo

交叉编译libjpeg-turbo,助力opencv编解码加速(1.5x~2.x)

烂笔头·张的博客 563

libjpeg-turbo使用

平时都用OpenCV的imwrite存图,保存为bmp格式的图片,速度快但占用空间大;存为jpg格式,占用空间小但存图时间长。 了解到libjpeg这个开源库存图,实验了一下,老版的libjpeg与OpenCV相比,没有优势。新版的libjpeg-turbo就不一样了,存图效率很高。 (1)从官网下载最新版本的libjpeg-turbo (2)安装.exe文件,解压压缩包 (3)应用 参考do...

bemy1008的博客 8894

bmpjpg使用libjpeg

  jpg压缩原理可以参考这篇文章http://hi.baidu.com/tiandsp/item/f5a2dcde6ef1405bd73aae41,我很早以前的一篇文章。   没有使用libjpeg的压缩代码可以看看这篇文章http://hi.baidu.com/tiandsp/item/9b5843c58a3b4474cfd4f841,也是我很早以前的。   这次使用libjpeg库压...

weixin_34064653的博客 107

BMPJPG图像格式换工具实战应用

现在我们有一堆稀疏的整数矩阵,接下来要用霍夫曼编码进一步压缩。流程如下:DC系数:用差分编码(DPCM),记录与前一块的差值AC系数:Zigzag扫描 → RLE编码(Run-Length Encoding)→ Huffman编码Zigzag顺序是为了把连续的零聚集在一起:...然后使用对表示非零系数前的零个数及其值,例如(3, 15)表示跳过3个零,下一个数是15。最后查Huffman表编码输出比特流。

weixin_42524864的博客 946

centos7 C++ 使用libjpeg-turbo (jpg bmp以及bmpjpg)

    libjpeg-turbo这个库比libjpeg强大一些,libjpeg解析完bmp以后,数据格式是RGB,如果再保存为BGR就比较麻烦,而libjpeg-turbo保存为BGR格式的时候有JCS_EXT_BGR这个参数,所以保存bmp图片就方便很多了。     解析为bmp时,bmp需要4字节对齐,这里我的做法是,假如一个jpg的tup宽度是157,我这边是将图片扩展为160个像素。这...

sz76211822的专栏 2608

libjpeg使用jpg图片的提取

显存framebuffer中存放的是像素的RGB数据,jpg格式的图片是压缩的,用libjpegjpg图片解压出RGB原始数据。libjpeg使用C语言实现的读、写JPEG文件的库,使用libjpeg的应用程序是以”scanline”为单位进行图像处理的。换速度和质量可以平衡。 libjpeg处理的图片一般是矩形,矩形里是一行行数据,一行数据为”scanline”。每行数据是一个个像素,像素的值由component组成,RGB有三个component,灰度值有一个component。图片信息相当于一个

qq_43604517的博客 2986

android 编译 libjpeg-turbo,android 编译libjpeg-turbo

最近解码视频生成的是yuv数据,然后需要生成jpg图片,之前的方案是yuv-rgb-bmp-jpg这样的话是很慢的,计算了时间大概要300ms左右,导致多次点击照相,会造成视频画面的延迟,所以只能使用别的方案替代,在网上查询libjpeg,但是又看了一篇文章http://www.linuxsir.org/bbs/thread374093.html说libjpeg-turbolibjpeg快了2-...

weixin_36316642的博客 495

jpgbmp使用libjpeg

源: jpgbmp使用libjpeg) 【JPEG压缩原理 bmpjpg使用libjpeg载于:https://www.cnblogs.com/LittleTiger/p/4431439.html...

weixin_30293079的博客 84

linux rgb数据 截图,linux---libjpeg使用(jpg to rgb)

一:libjpeg库的编译下载源码,解压后./configure --prefix=/xxxx CC=arm-linux-gcc - -host=arm-linux --enable-shared --enable-static---xxxx为生成动静态裤的目录----CC为交叉编译器-----enable-shared ---enable-static 使能...

weixin_33204522的博客 321

linux libjpeg对图像进行压缩

libjpeg 是一个完全用C语言编写的库,包含了被广泛使用JPEG解码、JPEG编码和其他的JPEG功能的实现。Libjpeg不仅可以把bmp格式化成jpg格式,还支持其他格式的化成jpg格式(例如ppm,gif,targa,rle等)。  化流程如下: (1) 分配和初始化一个JPEG压缩对象 在libjpeg中,JPEG压缩对象被定义为“struct  jpeg_compr

manchestermi的博客 3367

IOPaint AI图片修复完整教程:三步装好,1分钟抹掉照片里的水印、路人和文字

IOPaint 是一款免费开源的 AI图片修复 工具,你把照片里想改的地方涂一下,它就会自动补全成自然的内容。既能删掉水印、路人、文字和瑕疵,也能替换物体、向外扩展画面。全程在自己的电脑上运行,图片不上传、不留痕,CPU、GPU、苹果芯片都能跑。 ## 先看到效果:三步安装并启动 ✅ 装好就能用,整个过程只要 3 步: 1. 安装依赖包: ```bash pip3 install iopa

gitblog_01035的博客 900

数码相框——7、 libjpeg使用(1)

1、回顾下,LCD显示图像的原理: LCD控制器从显存里,拿数据,这个数据由RGB构成的,然后等LCD显示出最后一个像素了,又从头从显存里拿数据。 2、ibjpeg库 为什么jpg格式的文件比bmp格式小那么多? jpg文件是压缩的文件。 1)使用libjpeg库,把jpg文件解压出RGB原始数据。 2)使用libjpeg的应用程序是以“scanline”为单位进行图像处理 3)步骤 4)co...

qq_40674996的博客 409

android 编译libjpeg-turbo

最近解码视频生成的是yuv数据,然后需要生成jpg图片,之前的方案是yuv-rgb-bmp-jpg这样的话是很慢的,计算了时间大概要300ms左右,导致多次点击照相,会造成视频画面的延迟,所以只能使用别的方案替代,在网上查询libjpeg,但是又看了一篇文章http://www.linuxsir.org/bbs/thread374093.html说libjpeg-turbolibjpeg快了2-

jwzhangjie的专栏 1万+
上一篇: Windows上编译libjpeg-turbo
下一篇: jQuery requires a window with a document异常解决方案
疯狂-的-蜗牛
博客等级 码龄16年 427粉丝 104原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值