#pragma once #include #include template class __declspec(dllexport) std::shared_ptr; // 消除警告C2451 // 图像编解码结果数据结构 struct XImageBytes { std::shared_ptr ptr; size_t size; }; // 图像编解码类型枚举 enum class XImageType { QOI = 'q', PNG = 'p', BMP = 'b', }; // 图像编解码类 class __declspec(dllexport) XImageCodecs { public: enum class ErrorCode { OK = 0, FileOpenError = -1, FileReadError = -2, FileWriteError = -3, FileFormatError = -4, EncodeError = -5, DecodeError = -6, SaveError = -7, LoadError = -8, TypeExtMismatch = -9, }; struct Params { XImageType imageType = XImageType::QOI; // 编码器类型 int threadNum = -1; // 线程数 小于等于0表示自动确定 }; XImageCodecs(Params params); ~XImageCodecs(); // 直接读写图片 -- 内部调用 编码解码 和 加载保存 ErrorCode read(const char* filename, cv::Mat& image); ErrorCode write(const char* filename, const cv::Mat& image); // 编码解码 ErrorCode encode(const cv::Mat& image, XImageBytes& bytes); ErrorCode decode(cv::Mat& image, const XImageBytes& bytes); // 加载和保存 ErrorCode load(const char* filename, XImageBytes& bytes); ErrorCode save(const char* filename, const XImageBytes& bytes); private: Params params; };