debian

如何使用Debian CxImage进行图片压缩

小樊
41
2025-12-28 21:03:13
栏目: 智能运维

在 Debian 上使用 CxImage 进行图片压缩

一 安装与准备

二 C++ 示例 最小可用压缩

#include <iostream>
#include <cximage.h>

int main(int argc, char* argv[]) {
    if (argc != 3) {
        std::cerr << "用法: " << argv[0] << " <input> <output>\n";
        return 1;
    }
    const char* in  = argv[1];
    const char* out = argv[2];

    CxImage image;
    if (!image.Load(in)) {
        std::cerr << "加载失败: " << in << "\n";
        return 1;
    }

    image.SetJpegQuality(80); // 质量 0–100,按需调整

    if (!image.Save(out)) {
        std::cerr << "保存失败: " << out << "\n";
        return 1;
    }

    std::cout << "已保存: " << out << "\n";
    return 0;
}

三 C 示例 命令行式压缩

#include <stdio.h>
#include <stdlib.h>
#include <cximage.h>

int main(int argc, char *argv[]) {
    if (argc != 3) {
        fprintf(stderr, "用法: %s <input> <output>\n", argv[0]);
        return 1;
    }
    const char *input_filename  = argv[1];
    const char *output_filename = argv[2];

    CXIMAGE image;
    if (!image.Load(input_filename)) {
        fprintf(stderr, "加载失败: %s\n", input_filename);
        return 1;
    }

    image.SetJpegQuality(80);

    if (!image.Save(output_filename, CXIMAGE_FORMAT_JPEG)) {
        fprintf(stderr, "保存失败: %s\n", output_filename);
        return 1;
    }

    printf("已保存: %s\n", output_filename);
    return 0;
}

四 进阶优化与批量处理

#!/usr/bin/env bash
INPUT_DIR="./images"
QUALITY=80
OUT_SUFFIX="_compressed"

for f in "$INPUT_DIR"/*.{jpg,jpeg,png}; do
    [[ -e "$f" ]] || continue
    ext="${f##*.}"
    out="${f%.*}${OUT_SUFFIX}.jpg"
    ./compress "$f" "$out"
done

0
看了该问题的人还看了