一.保存失败的原因。
1.路径不存在:如果保存QImage.save("d:/1/image.png"); 然后你磁盘没有"d:/1"这路径会保存失败。
解决方法:创建一个d:/1"路径然后再QImage.save("d:/1/image.png");
2.路径写错了:小白入行编程前期常犯的问题,包括本人也遇到过这样的错误
解决方法:认真检查一下你的保存路径。路径保存格式有两种写法。
第一种路径格式:C:/Users/Username/Documents/Image.png
第二种路径格式:C:\\Users\\Username\\Documents\\Image.png
我个人喜欢用第一种,因为可以少些一个字符
3.保存路径有中文:作为一名开发者,大家都会有一个共识,能不用中文路径,尽量不用中文路径。玩游戏的小伙伴可能也遇到过,游戏中文路径会有很多奇奇怪怪的问题。想用中文路径也可以,把字符编码处理一下。
解决方法:不用中文路径。
4.加载的图像有问题:需要保存的那张图像有问题,例如QImage.load(1.png) 加载了一张.png格式的图片,然后保存为QImage.save(2.bmp) 或者 QImage.save(2.jpg)。会保存失败。
解决方法:使用排除法换张图片试试看。
二.自定义保存图像函数
写了简单的保存图像接口函数,复制拿去用,都加了备注,可以根据你的喜欢去改。
//img 需要保存的图像
//savePath 保存路径
//fileName 保存文件名
void SaveQImage( QImage &img, QString savePath,QString fileName) {
QString SaveFileName= fileName; //复制存储路径
QDir dir(savePath); //加载存储路径
bool saveOK = false; //保存合格表示符
QString imageName; //保存图像绝对路径
if (dir.exists()) { //判断路径是否存在,如果存在,则保存图像
qDebug() << u8"路径" << savePath << u8"存在!";
imageName = savePath + "/" + SaveFileName;
saveOK = img.save(savePath);
}
else { //如果不存在,则创建路径并保存图像
qDebug() << u8"路径" << savePath << u8"不存在!,创建路径。";
QDir().mkpath(savePath);
imageName = savePath + "/" + SaveFileName;
saveOK = img.save(imageName);
}
qDebug() << imageName; //打印保存图像的绝对路径
if (saveOK)//判断是否保存成功
{
qDebug() << "save is OK";
return;
}
qDebug() << "save is OK";
};
三.保存图像函数的使用方法
如果需要保存中文路径记得加u8。下面是我使用的例子。
QImage img;
img.load("D:/1.png");
qDebug() << img.height() << img.size();
SaveQImage(img, "D:/1/English", "English.png"); //保存成功
SaveQImage(img, u8"D:/1/中文", u8"中文.png"); //保存成功
SaveQImage(img, "D:\\1\\English2", "English.png"); //保存成功 ,第二种路径写法。
SaveQImage(img, u8"D:\\1\\English2", u8"English.png"); \\保存失败
SaveQImage(img, u8"D:/1/English", u8"English.jpg"); //保存失败
SaveQImage(img, u8"D:/1/中文", u8"中文.jpg"); // 保存失败
SaveQImage(img, u8"D:/1/English", u8"English.bmp"); // 保存失败
SaveQImage(img, u8"D:/1/中文", u8"中文.bmp"); // 保存失败
四.保存效果
1.中文名称
五.图片格式知识科补
JPG(JPEG)格式
- 全称:JPEG(Joint Photographic Experts Group)
- 特点:
- 压缩性:采用有损压缩算法,能在保持图像质量的同时减小文件大小。但过高的压缩比例可能导致图像质量降低。
- 色彩丰富:支持高达1600万种颜色,能够呈现出细腻的图像效果。
- 广泛兼容性:在各种操作系统和软件中都能打开和编辑,具有良好的兼容性。
- 可调节性:可以通过调整压缩比例来平衡图像质量和文件大小。
- 适合存储和传输:由于文件大小较小,适合在网络上存储和传输图像。
- 应用:广泛用于数字摄影、网页设计、印刷出版等领域。
PNG格式
- 特点:
- 无损压缩:采用无损压缩算法,能在压缩图像文件的同时保留所有与图像品质有关的信息。
- 高保真性:形式丰富,兼有GIF和JPG的色彩模式,图像质量高。
- 透明性:支持透明图像的制作,可以把图像背景设为透明。
- 显示速度快:只需下载少量图像信息就可以显示出低分辨率的预览图像。
- 文件体积较小:适合在网络上传输。
- 应用:广泛应用于网页设计、平面设计等领域。
BMP格式
- 全称:Bitmap(位图)
- 特点:
- 无压缩:采用位映射存储格式,不采用任何压缩,因此文件通常较大。
- 图像深度可选:支持lbit、4bit、8bit及24bit的图像深度。
- 兼容性好:作为Windows操作系统中的标准图像文件格式,能被多种Windows应用程序所支持。
- 应用:由于其文件大小较大,通常只在特定场合使用,如某些需要高质量图像输出的场景。
综上所述,JPG、PNG和BMP各有其特点和适用场景。JPG适合需要压缩且对图像质量有一定要求的场景;PNG适合需要保留图像全部信息且支持透明的场景;而BMP则由于其无压缩特性,通常只在需要高质量图像输出的特定场合使用。