libjpeg 的使用sample RGB转换到JPEG
2012-10-22 20:07
218 查看
想在程序中用到JPEG的图片保存,所以花了点时间。一开始在网上找资源,发现现成的还不好找,所以,贴出来共享!
首先到网上找相应的库文件,这个大家到网上Google一下就可以了
示例代码如下:
extern "C"{
#include "jpeglib/jpeglib.h"
}
int _tmain(int argc, _TCHAR* argv[])
{
//定义一个压缩对象,这个对象用于处理主要的功能
jpeg_compress_struct jpeg;
//用于错误信息
jpeg_error_mgr jerr;
//错误输出在绑定
jpeg.err = jpeg_std_error(&jerr);
//初始化压缩对象
jpeg_create_compress(&jpeg);
//定义压缩后的输出,这里输出到一个文件!
FILE* pFile = fopen( "c://tt.jpeg","wb" );
if( !pFile )
return 0;
//绑定输出
jpeg_stdio_dest(&jpeg, pFile);
//压缩参数设置。具体请到网上找相应的文档吧,参数很多,这里只设置主要的。
//我设置为一个 24 位的 512 X 512大小的RGB图片
jpeg.image_width = 512;
jpeg.image_height = 512;
jpeg.input_components = 3;
jpeg.in_color_space = JCS_RGB;
//其它参数设置为默认的!
jpeg_set_defaults(&jpeg);
//开始压缩。执行这一行数据后,无法再设置参数了!
jpeg_start_compress(&jpeg, TRUE);
//定义一个数组,代表图片每一行的数据。3 代表 jpeg.input_components
unsigned char oneRowImgData[ 512 * 3 ];
for( int i=0;i<512*3;++i )
oneRowImgData[i] = 0;
JSAMPROW row_pointer[1];
row_pointer[0] = oneRowImgData;
//从上到下,设置图片中每一行的像素值
for( int i=0;i<jpeg.image_height;++i )
{
oneRowImgData[ i ] = i%256;//随便给一个值
//将一行数据写入!
jpeg_write_scanlines( &jpeg,row_pointer,1 );
}
//结束压缩
jpeg_finish_compress(&jpeg);
//清空对象
jpeg_destroy_compress(&jpeg);
fclose( pFile ); pFile = NULL;
return 0;
}
最后生成的图下如上
另一个参考文章:
http://ou800doc.caldera.com/en/jpeg/libjpeg.txt
首先到网上找相应的库文件,这个大家到网上Google一下就可以了
示例代码如下:
extern "C"{
#include "jpeglib/jpeglib.h"
}
int _tmain(int argc, _TCHAR* argv[])
{
//定义一个压缩对象,这个对象用于处理主要的功能
jpeg_compress_struct jpeg;
//用于错误信息
jpeg_error_mgr jerr;
//错误输出在绑定
jpeg.err = jpeg_std_error(&jerr);
//初始化压缩对象
jpeg_create_compress(&jpeg);
//定义压缩后的输出,这里输出到一个文件!
FILE* pFile = fopen( "c://tt.jpeg","wb" );
if( !pFile )
return 0;
//绑定输出
jpeg_stdio_dest(&jpeg, pFile);
//压缩参数设置。具体请到网上找相应的文档吧,参数很多,这里只设置主要的。
//我设置为一个 24 位的 512 X 512大小的RGB图片
jpeg.image_width = 512;
jpeg.image_height = 512;
jpeg.input_components = 3;
jpeg.in_color_space = JCS_RGB;
//其它参数设置为默认的!
jpeg_set_defaults(&jpeg);
//开始压缩。执行这一行数据后,无法再设置参数了!
jpeg_start_compress(&jpeg, TRUE);
//定义一个数组,代表图片每一行的数据。3 代表 jpeg.input_components
unsigned char oneRowImgData[ 512 * 3 ];
for( int i=0;i<512*3;++i )
oneRowImgData[i] = 0;
JSAMPROW row_pointer[1];
row_pointer[0] = oneRowImgData;
//从上到下,设置图片中每一行的像素值
for( int i=0;i<jpeg.image_height;++i )
{
oneRowImgData[ i ] = i%256;//随便给一个值
//将一行数据写入!
jpeg_write_scanlines( &jpeg,row_pointer,1 );
}
//结束压缩
jpeg_finish_compress(&jpeg);
//清空对象
jpeg_destroy_compress(&jpeg);
fclose( pFile ); pFile = NULL;
return 0;
}
最后生成的图下如上
另一个参考文章:
http://ou800doc.caldera.com/en/jpeg/libjpeg.txt
相关文章推荐
- libjpeg 的使用sample RGB转换到JPEG
- linux---libjpeg使用(jpg to rgb)
- 使用json-lib将java对象转换成json字符串
- libjpeg使用
- Java之使用json-lib进行对象与json字符串之间的转换
- libjpeg与turbo libjpeg的使用
- 仿百度文库方案[openoffice.org 3+swftools+flexpaper](七) 之 使用iText将jpg、jpeg、png转换为pdf
- 使用 PHP 把 16 进制的颜色代码转换成 RGB 数组
- 使用json-lib进行Java和JSON之间的转换【转载】
- 使用json-lib进行Java和JSON之间的转换
- VC++使用CImage在内存中Jpeg转换Bmp图片
- 使用json-lib的JSONObject.toBean( )时碰到的日期属性转换的问题
- 使用Aspose.Pdf将PDF转换为JPEG图片格式
- 使用libjpeg处理图像(libjpeg的使用压缩与解压缩jpg格式)
- 图像处理之基础---用Shader实现的YUV到RGB转换:使用3重纹理实现 .
- Python ISBN号概述,校验位计算,10位-13位转换,验证,连字符,及常用库isbnid,isbnlib,isbntools的使用
- 使用PMULHW或PMADDWD指令对RGB颜色转换至YCbCr颜色的汇编优化
- 【第5篇】使用json-lib把json字符串数据转换成Collection
- 使用json-lib进行Java和JSON之间的转换
- Json - 使用json-lib完成javabean对象转换成json字符串