`
dream_people
  • 浏览: 60113 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

用libjpeg库生成jpeg文件(灰度)

阅读更多

jpeg代码,buffer是传入的位图,每个点一个字节的亮度,顺序排列

/*
 for(long y=min(m_lt.y,m_rt.y);y<=max(m_lb.y,m_rb.y);y++)
 {
  for(long x=lx;x<=rx;x++)
  {
   if(m_cmp_rbuffer[GET_RBUFFER_POS(x,y)] == 0) continue;

   long _x=x,_y=y;
   _GetRealPT(_x,_y);

   _x = _x /4;
   _y = _y /4;

   int _pos = _y * m_screen_size.cx / 4 + _x;
   
   m_real_buffer[_y * size.cx + _x] = '\255';
  }
 }


m_real_size = m_screen_size.cx * m_screen_size.cy / 16;
*/

int mkjpeg(int width,int height,char *buffer,char *filename)
{
	struct jpeg_compress_struct jcs;
	struct jpeg_error_mgr jem;
	FILE *fp;
	JSAMPROW row_pointer[1];   // 一行位图
	int row_stride;	// 每一行的字节数

	jcs.err = jpeg_std_error(&jem);
	jpeg_create_compress(&jcs);

	fp = fopen(filename,"wb");
	if (f==NULL) 
	{
        return FALSE;
	}
	jpeg_stdio_dest(&jcs, fp);

	jcs.image_width = width;    // 位图的宽和高,单位为像素 
	jcs.image_height = height;
	jcs.input_components = 1;   // 在此为1,表示灰度图, 如果是彩色位图,则为3 
	jcs.in_color_space = JCS_GRAYSCALE; //JCS_GRAYSCALE表示灰度图,JCS_RGB表示彩色图像 
	
	jpeg_set_defaults(&jcs); 
	jpeg_set_quality (&jcs, 80, TRUE);

	jpeg_start_compress(&jcs, TRUE);

	while (jcs.next_scanline < jcs.image_height) 
	{
		row_pointer[0] = buffer[jcs.next_scanline * width];
		jpeg_write_scanlines(&jcs, row_pointer, 1);
	}

	jpeg_finish_compress(&jcs);

	jpeg_destroy_compress(&jcs);
	fclose(fp);

    return TRUE;
}

 

 

分享到:
评论

相关推荐

    libjpeg来声称jpeg文件

    ### 使用libjpeg库生成JPEG文件(灰度) #### 一、引言 JPEG,全称Joint Photographic Experts Group,是由国际标准化组织(ISO)和CCITT联合制定的静态图像压缩编码标准,因其高效的压缩率而在互联网上广泛应用。...

    jpeg图片提取缩略图代码,包含库文件linux直接编译运行

    编译代码时,需要指定库文件的路径,如描述中所示:“`-I./my_jpeg/include/ -L./my_jpeg/lib ./my_jpeg/lib/libjpeg.a`”,这样编译器才能正确链接到jpeglib库。 总结起来,这个项目展示了如何利用jpeglib库在...

    ios libjpeg .a静态库

    1. 下载libjpeg源代码,针对iOS平台进行编译,生成armv7、arm64、i386、x86_64等不同架构的.a静态库文件。 2. 使用`lipo`工具合并不同架构的静态库,创建一个fat library,适用于所有兼容设备。 3. 将生成的fat ...

    libJpeg vs2008工程 (附解码调用示例+简单转灰度位图)

    最后,"Debug"目录可能包含了编译后的库文件和示例程序的可执行文件,这可以帮助你在调试和测试时直接运行程序,验证libJpeg的正确集成和使用。 总结来说,libJpeg与VS2008的结合,为开发者提供了一个强大且便捷的...

    libjpeg-turbo最新版

    3. **编译**: 运行`make`命令编译源代码,生成库文件。 4. **安装**: 使用`make install`将库文件安装到系统路径,以便其他程序使用。 5. **测试和集成**: 编译并运行示例程序以验证库的功能,然后将`libjpeg-turbo`...

    一个基于C实现的由JPEG Image 生成PDF 的API 类库代码

    1. **JPEG解码**:使用标准的JPEG库,如libjpeg,对JPEG图像进行解码,获取原始的RGB或YCbCr像素数据。解码过程包括解析JPEG文件头,读取段信息,执行DCT(离散余弦变换)逆变换等。 2. **图像处理**:解码后的图像...

    jpeg.rar_cjpeg_jpeg压缩编码

    CJPEG的工作流程包括读取输入图像、执行DCT、量化、熵编码,最后生成JPEG文件。 **JPEG压缩编码过程**主要包括以下几个步骤: 1. **颜色空间转换**:通常从RGB色彩空间转换到YCbCr色彩空间,因为Y(亮度)分量对...

    图像的格式转换

    在C++或其他编程语言中,可以使用如libjpeg库来读取和写入JPEG文件。 接下来是bmp格式,即Bitmap图像,它是Windows操作系统中的标准位图格式。BMP文件通常不进行压缩,因此文件体积较大,但图像质量较高。处理BMP...

    SnapEase图像处理工具_c语言_代码_下载

    2. 编译源代码:使用编译器编译源码,生成可执行文件或库文件。 3. 示例代码:源码中通常会包含一些示例程序,展示如何使用SnapEase进行图像处理,可以根据这些示例学习如何调用API。 4. 自定义应用:将SnapEase的...

    VC++ 封装好的一个图片显示类(BMP,JPG,GIF,WMF)

    JPG是一种有损压缩的图像格式,类需要包含JPEG解码库,如libjpeg,以处理这种格式。解码过程涉及DCT变换、量化和反量化等步骤。 5. **GIF格式**: GIF支持动画,类需要解析GIF头部信息,处理逻辑屏幕描述符、图像...

    Python项目开发实战_Pillow模块-图像处理_编程案例解析实例详解课程教程.pdf

    例如,在Ubuntu 14.04上,可以使用`apt-get install`命令安装`libjpeg-dev`、`libopenjpeg-dev`等库,然后执行`pip install pillow==2.6.1`进行安装。安装完成后,通过查看安装日志可以确认支持的图像格式和功能是否...

    c语言实现图片转化为 ASCII 图.zip

    使用二维循环遍历图片的每个像素,计算其灰度值(或RGB值),然后找到对应的ASCII字符,将其写入输出文件。 6. **优化与调整**: 为了提高效果,可以采用一些优化策略,比如动态调整字符集大小,根据图片内容选择...

    libgd-GD-2.3.zip

    1. 安装依赖:确保系统已经安装了必要的编译工具,如gcc、make、autoconf等,以及可能需要的图像库,如libjpeg、libpng、libgif等。 2. 下载libgd源代码:从官方网站或GitHub仓库获取libgd-GD-2.3的源码包。 3. 解压...

    Pillow-4.1.1.tar.gz

    Pillow库支持多种图像格式,包括JPEG、PNG、BMP、GIF、PPM、TIFF等,同时也能处理灰度、RGB、RGBA等各种色彩模式的图像。其核心功能包括图像读取、写入、裁剪、旋转、缩放、色彩转换、滤波等,极大地丰富了Python在...

    c语言数字图像处理.zip

    1. 图像读取与存储:C语言下处理图像,我们可能需要使用如libpng、libjpeg等库来读取和保存常见的PNG或JPEG格式图像。这些库提供了API接口,使得程序可以方便地访问图像数据。 2. 图像表示:在内存中,图像通常被...

    cpp-BlurHash是图像占位符的紧凑表示

    在提供的`blurhash-master`压缩包中,可能包含了BlurHash的C++实现源代码,包括库文件、头文件以及示例程序。通过研究这些代码,你可以更深入地了解BlurHash的实现细节,并将其集成到自己的项目中。 总之,BlurHash...

    Pillow-2.3.2.tar.gz

    《Pillow库详解及其在Python中的应用》 Pillow,作为一个Python图像处理库,是 PIL(Python Imaging Library)的一个分支,旨在提供更加友好且易于安装的接口,支持Python 3.x版本。在“Pillow-2.3.2.tar.gz”这个...

Global site tag (gtag.js) - Google Analytics