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文件(灰度) #### 一、引言 JPEG,全称Joint Photographic Experts Group,是由国际标准化组织(ISO)和CCITT联合制定的静态图像压缩编码标准,因其高效的压缩率而在互联网上广泛应用。...
编译代码时,需要指定库文件的路径,如描述中所示:“`-I./my_jpeg/include/ -L./my_jpeg/lib ./my_jpeg/lib/libjpeg.a`”,这样编译器才能正确链接到jpeglib库。 总结起来,这个项目展示了如何利用jpeglib库在...
1. 下载libjpeg源代码,针对iOS平台进行编译,生成armv7、arm64、i386、x86_64等不同架构的.a静态库文件。 2. 使用`lipo`工具合并不同架构的静态库,创建一个fat library,适用于所有兼容设备。 3. 将生成的fat ...
最后,"Debug"目录可能包含了编译后的库文件和示例程序的可执行文件,这可以帮助你在调试和测试时直接运行程序,验证libJpeg的正确集成和使用。 总结来说,libJpeg与VS2008的结合,为开发者提供了一个强大且便捷的...
3. **编译**: 运行`make`命令编译源代码,生成库文件。 4. **安装**: 使用`make install`将库文件安装到系统路径,以便其他程序使用。 5. **测试和集成**: 编译并运行示例程序以验证库的功能,然后将`libjpeg-turbo`...
1. **JPEG解码**:使用标准的JPEG库,如libjpeg,对JPEG图像进行解码,获取原始的RGB或YCbCr像素数据。解码过程包括解析JPEG文件头,读取段信息,执行DCT(离散余弦变换)逆变换等。 2. **图像处理**:解码后的图像...
CJPEG的工作流程包括读取输入图像、执行DCT、量化、熵编码,最后生成JPEG文件。 **JPEG压缩编码过程**主要包括以下几个步骤: 1. **颜色空间转换**:通常从RGB色彩空间转换到YCbCr色彩空间,因为Y(亮度)分量对...
在C++或其他编程语言中,可以使用如libjpeg库来读取和写入JPEG文件。 接下来是bmp格式,即Bitmap图像,它是Windows操作系统中的标准位图格式。BMP文件通常不进行压缩,因此文件体积较大,但图像质量较高。处理BMP...
2. 编译源代码:使用编译器编译源码,生成可执行文件或库文件。 3. 示例代码:源码中通常会包含一些示例程序,展示如何使用SnapEase进行图像处理,可以根据这些示例学习如何调用API。 4. 自定义应用:将SnapEase的...
JPG是一种有损压缩的图像格式,类需要包含JPEG解码库,如libjpeg,以处理这种格式。解码过程涉及DCT变换、量化和反量化等步骤。 5. **GIF格式**: GIF支持动画,类需要解析GIF头部信息,处理逻辑屏幕描述符、图像...
例如,在Ubuntu 14.04上,可以使用`apt-get install`命令安装`libjpeg-dev`、`libopenjpeg-dev`等库,然后执行`pip install pillow==2.6.1`进行安装。安装完成后,通过查看安装日志可以确认支持的图像格式和功能是否...
使用二维循环遍历图片的每个像素,计算其灰度值(或RGB值),然后找到对应的ASCII字符,将其写入输出文件。 6. **优化与调整**: 为了提高效果,可以采用一些优化策略,比如动态调整字符集大小,根据图片内容选择...
1. 安装依赖:确保系统已经安装了必要的编译工具,如gcc、make、autoconf等,以及可能需要的图像库,如libjpeg、libpng、libgif等。 2. 下载libgd源代码:从官方网站或GitHub仓库获取libgd-GD-2.3的源码包。 3. 解压...
Pillow库支持多种图像格式,包括JPEG、PNG、BMP、GIF、PPM、TIFF等,同时也能处理灰度、RGB、RGBA等各种色彩模式的图像。其核心功能包括图像读取、写入、裁剪、旋转、缩放、色彩转换、滤波等,极大地丰富了Python在...
1. 图像读取与存储:C语言下处理图像,我们可能需要使用如libpng、libjpeg等库来读取和保存常见的PNG或JPEG格式图像。这些库提供了API接口,使得程序可以方便地访问图像数据。 2. 图像表示:在内存中,图像通常被...
在提供的`blurhash-master`压缩包中,可能包含了BlurHash的C++实现源代码,包括库文件、头文件以及示例程序。通过研究这些代码,你可以更深入地了解BlurHash的实现细节,并将其集成到自己的项目中。 总之,BlurHash...
《Pillow库详解及其在Python中的应用》 Pillow,作为一个Python图像处理库,是 PIL(Python Imaging Library)的一个分支,旨在提供更加友好且易于安装的接口,支持Python 3.x版本。在“Pillow-2.3.2.tar.gz”这个...