在 Debian 上使用 cxImage 进行图像编辑
一 环境准备与安装
- 使用包管理器安装(推荐)
- 更新索引并安装开发包与构建工具:
- sudo apt update
- sudo apt install libcximage-dev build-essential cmake pkg-config
- 验证安装:
- pkg-config --cflags --libs cximage
- 从源码构建(仓库无合适版本时)
- 安装依赖:
- sudo apt install build-essential cmake libpng-dev libjpeg-dev libtiff-dev libgif-dev
- 获取源码并构建:
- git clone https://github.com/cximage/cxImage.git
- cd cxImage && mkdir build && cd build
- cmake … && make
- sudo make install
- 验证安装:
- pkg-config --cflags --libs cximage
- 说明
- 常见头文件名为:ximage.h;库名为:libcximage.so / libcximage.a。若发行版未提供包,可参考上游仓库构建。
二 快速上手示例
- 编译命令
- g++ -o demo demo.cpp -lcximage $(pkg-config --cflags --libs cximage)
- 最小示例(加载、保存、缩放、旋转、灰度)
- 代码示例(保存为 demo.cpp):
- #include “ximage.h”
#include
int main() {
CxImage img;
// 1) 加载
if (!img.Load(“input.jpg”, CXIMAGE_FORMAT_JPG)) {
std::cerr << “加载失败: input.jpg\n”; return -1;
}
// 2) 缩放(等比可按目标宽度或高度传 0)
if (!img.Resample(800, 0)) {
std::cerr << “缩放失败\n”; return -1;
}
// 3) 旋转 90°
if (!img.Rotate(90)) {
std::cerr << “旋转失败\n”; return -1;
}
// 4) 灰度
img.GrayScale();
// 5) 保存
if (!img.Save(“output.png”, CXIMAGE_FORMAT_PNG)) {
std::cerr << “保存失败: output.png\n”; return -1;
}
std::cout << “处理完成: output.png\n”;
return 0;
}
- 提示
- 常用格式常量:CXIMAGE_FORMAT_JPG、CXIMAGE_FORMAT_PNG、CXIMAGE_FORMAT_BMP、CXIMAGE_FORMAT_GIF、CXIMAGE_FORMAT_TIF。
- 头文件引用可用:#include “cximage.h” 或 #include “ximage.h”(不同发行或版本可能不同)。
三 常见编辑操作速查
- 格式转换
- img.Load(“in.jpg”, CXIMAGE_FORMAT_JPG);
- img.Save(“out.png”, CXIMAGE_FORMAT_PNG);
- 缩放与等比缩放
- 指定尺寸:img.Resample(1280, 720);
- 等比(按宽度):img.Resample(800, 0);
- 等比(按高度):img.Resample(0, 600);
- 旋转
- 顺时针 90°:img.Rotate(90);
- 其他角度:img.Rotate(angle, 1); // 1 表示高质量插值(可选)
- 颜色与效果
- 灰度:img.GrayScale();
- 二值化(阈值 128):img.Threshold(128);
- 提示
- 多数操作返回 bool,建议检查返回值以便定位失败原因。
四 编译链接与排错要点
- 链接与编译
- 直接链接:g++ main.cpp -lcximage
- 使用 pkg-config:g++ main.cpp -lcximage $(pkg-config --cflags --libs cximage)
- 自定义路径:g++ main.cpp -I/path/include -L/path/lib -lcximage
- 常见问题
- 头文件找不到:确认安装了 libcximage-dev,并使用正确头文件名(ximage.h 或 cximage.h)。
- 未定义引用:确认链接了 -lcximage,且架构与库一致(32/64 位)。
- 找不到库:检查库路径是否在 /usr/lib /usr/local/lib,必要时设置 LD_LIBRARY_PATH 或写入 /etc/ld.so.conf.d/ 后执行 ldconfig。
- 格式不支持:安装相应编解码依赖(如 libpng-dev、libjpeg-dev、libtiff-dev、libgif-dev),重新构建库。