ubuntu

Ubuntu CxImage如何导入图片

小樊
43
2025-12-20 15:44:30
栏目: 智能运维

Ubuntu 下使用 CxImage 导入图片

一 准备环境

二 最简示例代码

#include "ximage.h"
#include <iostream>

int main() {
    CxImage image;
    // 支持直接传入文件路径,内部会按扩展名选择解码器
    if (!image.Load("input.jpg")) {
        std::cerr << "无法加载图像: input.jpg" << std::endl;
        return 1;
    }
    std::cout << "宽: " << image.GetWidth()
              << " 高: " << image.GetHeight()
              << " 格式: " << image.GetFormatStr() << std::endl;

    // 示例:另存为 PNG
    if (!image.Save("output.png", CXIMAGE_FORMAT_PNG)) {
        std::cerr << "保存失败: output.png" << std::endl;
        return 1;
    }
    return 0;
}

三 从内存加载图片

#include "ximage.h"
#include <vector>
#include <iostream>

// 从内存缓冲区加载(已知格式)
bool loadFromMemory(CxImage& img, const std::vector<uint8_t>& buf, int fmt) {
    CxMemFile mem((BYTE*)buf.data(), (DWORD)buf.size());
    return img.Decode(&mem, fmt);
}

// 从内存缓冲区加载(自动探测格式)
bool loadFromMemoryAuto(CxImage& img, const std::vector<uint8_t>& buf) {
    CxMemFile mem((BYTE*)buf.data(), (DWORD)buf.size());
    return img.Load(&mem); // 自动识别
}

int main() {
    std::vector<uint8_t> data = /* 你的图像字节数据 */;
    CxImage image;

    // 方式A:已知格式
    // if (loadFromMemory(image, data, CXIMAGE_FORMAT_PNG)) { ... }

    // 方式B:自动探测
    if (loadFromMemoryAuto(image, data)) {
        std::cout << "内存加载成功: " << image.GetWidth() << "x" << image.GetHeight() << std::endl;
        image.Save("from_mem.png", CXIMAGE_FORMAT_PNG);
    } else {
        std::cerr << "内存加载失败" << std::endl;
    }
    return 0;
}

四 常见问题与排查

0
看了该问题的人还看了