在 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