基于libjpeg-turto 开发jpeg2yuv 接口

本文档介绍了如何基于libjpeg-turbo库创建一个名为jpeg2yuv的接口。首先,在/data/mac/jpegtest目录下创建了include和libs子目录,用于存放库文件和头文件。接着,将编译好的libjpeg-turbo库文件和头文件复制到相应目录。然后,编写myjpeg.h和myjpeg.c,并生成静态库libmyjpeg.a。最后,编写mytest.c来测试自定义的库,并成功编译运行mytest程序进行验证。
摘要由CSDN通过智能技术生成

#在测试文件夹下建立目录 jpegtest

cd /data/mac

mkdir jpegtest

 #在jpegtest下建立 include libs目录用于存储 libjpeg-turto相关库文件和头文件

cd jpegtest

mkdir include

mkdir libs

 

#拷贝之前编译好的libjpeg-turto 库文件到libs

cd libs 

cp ../../libjpeg-turbo-1.5.3/.libs/* ./

#拷贝头文件到include

cd ..

cd include 

cp ../../libjpeg-turbo-1.5.3/*.h ./

cd ..

 

#在jpegtest目录下编写 myjpeg.h myjpeg.c文件 然后生成.a

#此处忽略myjpeg.c myjpeg.h编写过程,编写完成后执行下面操作

//myjpeg.h

#ifndef __MYJPEG_H__
#define __MYJPEG_H__

#if defined(_WIN32) && defined(DLLDEFINE)
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT
#endif
#define DLLCALL
#ifdef __cplusplus
extern "C" {
#endif
    
DLLEXPORT int DLLCALL myJpeg2Yuv(unsigned char* compressedImage,long unsigned int jpegSize, unsigned char **dstBuf, unsigned long int *yuvSize);


#ifdef __cplusplus
}
#endif

#endif
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
利用jpeglib库转JPEG static void put_jpeg_yuv420p_file(FILE *fp, unsigned char *image, int width, int height, int quality) { int i, j; JSAMPROW y[16],cb[16],cr[16]; // y[2][5] = color sample of row 2 and pixel column 5; (one plane) JSAMPARRAY data[3]; // t[0][2][5] = color sample 0 of row 2 and column 5 struct jpeg_compress_struct cinfo; struct jpeg_error_mgr jerr; data[0] = y; data[1] = cb; data[2] = cr; cinfo.err = jpeg_std_error(&jerr); // Errors get written to stderr jpeg_create_compress(&cinfo); cinfo.image_width = width; cinfo.image_height = height; cinfo.input_components = 3; jpeg_set_defaults(&cinfo); jpeg_set_colorspace(&cinfo, JCS_YCbCr); cinfo.raw_data_in = TRUE; // Supply downsampled data #if JPEG_LIB_VERSION >= 70 //#warning using JPEG_LIB_VERSION >= 70 cinfo.do_fancy_downsampling = FALSE; // Fix segfault with v7 #endif cinfo.comp_info[0].h_samp_factor = 2; cinfo.comp_info[0].v_samp_factor = 2; cinfo.comp_info[1].h_samp_factor = 1; cinfo.comp_info[1].v_samp_factor = 1; cinfo.comp_info[2].h_samp_factor = 1; cinfo.comp_info[2].v_samp_factor = 1; jpeg_set_quality(&cinfo, quality, TRUE); cinfo.dct_method = JDCT_FASTEST; jpeg_stdio_dest(&cinfo, fp); // Data written to file jpeg_start_compress(&cinfo, TRUE); for (j = 0; j < height; j += 16) { for (i = 0; i < 16; i++) { y[i] = image + width * (i + j); if (i % 2 == 0) { cb[i / 2] = image + width * height + width / 2 * ((i + j) / 2); cr[i / 2] = image + width * height + width * height / 4 + width / 2 * ((i + j) / 2); } } jpeg_write_raw_data(&cinfo, data, 16); } jpeg_finish_compress(&cinfo); jpeg_destroy_compress(&cinfo); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值