QT保存图片效率低的解决


title: QT保存图片效率低的解决
date: 2022-09-016 16:24:24
tags: [C++, QT]

做项目的时候有个需求:每次计算保存一个结果图片,往前测试和使用的时候数据量都比较小顶多十几个,今天稍微加大了点数据,发现到五十几个的时候就卡成了PPT,这里记录一下问题排查和解决的途径。

降低保存图片质量

查看保存图片的属性,可以看到图片的质量是比较高的

这个图片的分辨率是2448x2048的,也就是摄像头传回来的原始分辨率,每张图达到了恐怖的14MB,这样100张图下来就一1G多,非常消耗空间,但是在查看结果的时候多是偏向查看数据,图片不需要这么清晰,而且我们放结果图片的控件大小是800x500,所以这是浪费!

那么,第一个提高效率的方法就是降低图片质量。

		resPixVec.push_back(Tools::cvtQPixmap(matchMap,QImage::Format_BGR888).scaled(QSize(612,512),Qt::KeepAspectRatio));

修改存图逻辑

上面那个方法终究是治标不治本的,再看代码,发现一个大问题,之前的存图逻辑是:把所有计算的结果图像存到一个QMap里,然后每次添加或者删除之后先对这个map进行操作,然后重新保存图片。

这哪行啊,一个图片有这么多个像素,然后每次计算都要进行这么多的存图操作,效率肯定出问题。

解决方案:

给每个图片一个唯一的id,Qt中使用唯一id即uuid的方法:

		QUuid uuid = QUuid::createUuid();
		QString strUUId = uuid.toString().remove("{").remove("}").remove("-").toUpper();

然后直接通过这个uuid对图片文件进行操作,算是彻底解决了这个问题。

你可能感兴趣的:(qt,c++,开发语言)