Debian下优化 CxImage 资源占用的实用方案
一 建立可量化的基线
二 编译与运行参数优化
三 内存占用优化
四 处理管线与系统层面的优化
五 示例 加载后即刻降采样与压缩保存
#include <cximage.h>
#include <iostream>
#include <chrono>
int main() {
using namespace std::chrono;
CxImage image;
auto t0 = high_resolution_clock::now();
if (!image.Load("input.jpg", CXIMAGE_FORMAT_JPG)) {
std::cerr << "Load failed\n";
return 1;
}
std::cout << "Load: " << duration<double>(high_resolution_clock::now() - t0).count() << " s\n";
// 仅当原图大于目标尺寸才降采样,减少不必要计算
int w = image.GetWidth(), h = image.GetHeight();
int tw = 1280, th = 720;
if (w > tw || h > th) {
t0 = high_resolution_clock::now();
image.Resample(tw, th, 1); // 1 = 双三次,质量优先;追求速度可选 3 = 最近邻
std::cout << "Resample: " << duration<double>(high_resolution_clock::now() - t0).count() << " s\n";
}
t0 = high_resolution_clock::now();
image.SetJpegQuality(80); // 75–85 通常更均衡
if (!image.Save("output.jpg", CXIMAGE_FORMAT_JPG)) {
std::cerr << "Save failed\n";
return 1;
}
std::cout << "Save: " << duration<double>(high_resolution_clock::now() - t0).count() << " s\n";
return 0;
}