cximage保存图片0字节错误问题以及解决。

这几天自己在弄一个图片合并的问题,发现一直出现失败,达不到自己想要的效果。后来在网上借鉴了一部分代码,发现最终保存下来的合并的图片大小为0字节。

	CxImage img1,img2,img3;
    int h1,w1,h2,w2,h3,w3,bpp;

    img1.Load("1.jpg",CXIMAGE_FORMAT_JPG);
    img2.Load("2.jpg",CXIMAGE_FORMAT_JPG);

    h1=img1.GetHeight();
    w1=img1.GetWidth();

    h2=img2.GetHeight();
    w2=img2.GetWidth();

    h3=h1;
    w3=w1+w2;

    bpp=img1.GetBpp();

    img3.Create(w3,h3,bpp);
    img3.MixFrom(img1,0,0);
    img3.MixFrom(img2,w1,0);

    img3.Save("3.jpg",CXIMAGE_FORMAT_JPG);

在这里插入图片描述

最后发现了是图片的原因:
在这里插入图片描述
在这里插入图片描述
分析:cximage有些版本对不常用的图片位深度支持不好。建议使用彩图测试。

首先选取了2张24位深度的彩图:
注意:如果在合并的时候两张图片的长和宽如果不一样,建议重新设置一下大小
img1.Resample(500,500);
img2.Resample(500,500);
在这里插入图片描述
在这里插入图片描述
合并之后就变成了8位的灰度图。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

<think>好的,我需要帮助用户解决在Visual C++ 2017中使用和配置CxImage库的问题。首先,我需要回忆一下CxImage库的基本信息。CxImage是一个用于处理图像的开源C++库,支持多种格式,比如BMP、JPEG、GIF等。用户可能在项目中需要加载、保存或转换图像格式,所以需要正确配置这个库。 用户提到的是Visual C++ 2017,所以需要针对这个版本的开发环境进行配置。首先,用户可能需要下载CxImage的源代码或者预编译的库文件。我记得CxImage依赖于其他库,比如zlib和libpng,因此可能需要先配置这些依赖项。 接下来,步骤可能包括:下载CxImage库、解压到项目目录或系统目录,配置包含路径和库路径,链接必要的库文件,处理可能的依赖库,然后在代码中包含头文件并使用相关功能。同时需要注意Visual Studio的项目属性设置,比如C/C++的附加包含目录,链接器的附加库目录和附加依赖项。 还可能遇到常见问题,比如字符集的问题(Unicode vs多字节字符集),运行时库的匹配(MT vs MD),以及64位和32位平台的配置差异。需要提醒用户注意这些细节,避免编译或运行时错误。 另外,用户可能需要示例代码来测试配置是否成功,例如加载一张图片保存为另一种格式。这有助于验证所有配置是否正确。 在引用方面,用户提供的引用[^1]和[^2]提到C++标准库和一些开发工具包资源,虽然CxImage本身不在这些引用中,但可能需要参考类似的开源库配置方法。不过,根据用户的问题,重点应放在CxImage的具体配置步骤上,确保步骤清晰,适合VC++2017的环境。 最后,需要生成相关问题,帮助用户进一步学习,比如如何解决编译错误、处理特定图像格式或优化性能等。这些问题应该与CxImage的使用和配置相关,帮助用户深入理解。</think>### 在Visual C++ 2017中使用CxImage库的配置方法 #### 1. **下载与准备依赖库** CxImage库依赖于`zlib`、`libpng`、`libjpeg`等第三方库。需按以下步骤准备: - **CxImage源码**: 从[官方地址](http://www.xdp.it/cximage.htm)下载并解压。 - **依赖库**: - 下载`zlib`、`libpng`、`libjpeg`的源码或预编译库文件[^2]。 - 若使用预编译库,需确保其与Visual C++ 2017兼容(例如,使用`MT`或`MD`运行时库)。 #### 2. **配置Visual Studio项目** - **包含路径**: - 右键项目 → 属性 → **C/C++** → **常规** → **附加包含目录**: ```plaintext C:\CxImage\include; // CxImage头文件路径 C:\zlib\include; // zlib头文件路径 C:\libpng\include; // libpng头文件路径 ``` - **库路径**: - 属性 → **链接器** → **常规** → **附加库目录**: ```plaintext C:\CxImage\lib\VC2017; C:\zlib\lib\VC2017; C:\libpng\lib\VC2017; ``` - **链接库文件**: - 属性 → **链接器** → **输入** → **附加依赖项**: ```plaintext cximage.lib zlib.lib libpng.lib jpeg.lib ``` #### 3. **代码示例** ```cpp #include <windows.h> #include "ximage.h" int main() { CxImage image; // 加载BMP图像 if (image.Load("input.bmp", CXIMAGE_FORMAT_BMP)) { // 转换为JPEG并保存 image.SetJpegQuality(90); image.Save("output.jpg", CXIMAGE_FORMAT_JPG); } return 0; } ``` #### 4. **常见问题解决** - **字符集冲突**: - 若项目使用**Unicode字符集**,需在CxImage源码的`ximage.h`中添加: ```cpp #define _UNICODE ``` - **运行时库不匹配**: - 确保所有依赖库的运行时库(`MT`/`MTd`或`MD`/`MDd`)与项目设置一致。 - **64位平台支持**: - 若编译为64位程序,需确保所有依赖库也编译为64位版本。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值