使用C++实现图片的快速的无损压缩和解压缩

1.实现原理

        实现完整的图片无损压缩和解压缩需要使用一些图像处理库,例如OpenCV,libjpeg,libpng,等等。这里我们以libjpeg为例进行介绍。

2.压缩函数

        压缩:首先需要读取图片,将其转换成JPEG格式,然后进行压缩。

#include 
#include 

void compress(const char* img_path, const char* compressed_path) {

    // 1. 打开输入文件
    FILE *infile = fopen(img_path, "rb");

    struct jpeg_decompress_struct srcinfo;
    struct jpeg_error_mgr srcerr;

    // 2. 用jpeg_std_error初始化结构体srcerr
    srcinfo.err = jpeg_std_error(&srcerr);

    // 3. 调用jpeg_create_decompress函数,初始化结构体srcinfo
    jpeg_create_decompress(&srcinfo);

    // 4. 将输入文件关联到srcinfo
    jpeg_stdio_src(&srcinfo, infile);

    // 5. 调用jpeg_read_header函数,获取图像信息
    jpeg_read_header(&srcinfo, TRUE);

    // 6. 调用jpeg_start_decompress函数,启动解压缩
    jpeg_start_decompress(&srcinfo);

    // 7. 分配内存存储原始像素数据
    int row_stride 

你可能感兴趣的:(机器视觉开发专栏,c++,无损压缩,图片无所压缩,图片解压缩,opencv)