问题描述
- 用IJG的jpeg库压缩DIB位图出现色彩失真。
-
这是用IJG的jpeg库编写的一段压缩DIB位图的程序,程序运行没问题,结果图形色彩却出现了严重的失真: jpeg_compress_struct jpeg; jpeg_error_mgr jerr; jpeg.err = jpeg_std_error(&jerr); //错误输出在绑定 jpeg_create_compress(&jpeg); //初始化压缩对象 //定义压缩后的输出,这里输出到一个文件! FILE* pFile = fopen( "d:\myjpeg.jpeg","wb"); if( !pFile ) return; jpeg_stdio_dest(&jpeg, pFile); //绑定输出 jpeg.image_width = bmp.bmWidth; jpeg.image_height = bmp.bmHeight; jpeg.input_components = 3; jpeg.in_color_space = JCS_RGB; jpeg_set_defaults(&jpeg); jpeg_set_quality(&jpeg, 60, TRUE); jpeg_start_compress(&jpeg, TRUE); JSAMPROW row_pointer[1]; for(int i=0;i<bmp.bmHeight;i++) //采用倒序压缩,因DIB位图为倒序 { row_pointer[0] = (pBits +( bmp.bmHeight - (i+1))* 4 *((bmp.bmWidth * 24 + 31) / 32)); jpeg_write_scanlines(&jpeg, row_pointer, 1); } jpeg_finish_compress(&jpeg); jpeg_destroy_compress(&jpeg); fclose( pFile ); pFile = NULL;
因网络问题无法上传图片,求高手解答,非常感谢!
解决方案
压缩肯定有一定的失真,压缩比率别压太狠。
解决方案二:
我各种比例都试了一下,色彩效果都一样。
时间: 2024-10-29 01:01:44