在一次保存采集到的图像时遇到了一个很有趣的问题,为了区分保存的Bmp图片,需要用到时间戳来作为图片的名称,我是用Qt做的功能,自然而然第一时间想到的是用Qt中的QDateTime类来获取当前时间,然后输出格式:Image_年_月_日_时_分_秒_毫秒.bmp(Image_2023_1_12_11_20_34_618.bmp)。
但是,使用QDateTime性能真是不敢恭维,不是一般的慢,几乎是一秒保存一张图片,最后实在没办法使用了Windows API GetLocalTime()函数来获取当前时间,毕竟是在windows系统下做的项目,使用自带的接口就很靠谱了。下面直接看效果。
使用QDateTime获取当前时间保存图片的效果:
使用 GetLocalTime()获取当前时间保存图片的效果:
两种方式都保存3s左右的图片,使用QDateTime保存了5张图片,使用GetLocalTime()保存了311张图片,如此的悬殊,真是不可思议。
代码部分:
QDateTime
static const char *c_sDate = "yyyy_MM_dd_";
static const char *c_sTime = "hh_mm_ss_ms";
QString getDataTimeString()
{
QDateTime dataTime = QDateTime::currentDateTime();
QString sToday = dataTime.date().toString(c_sDate);
QString sTime = dataTime.time().toString(c_sTime);
return sToday + sTime;
}
GetLocalTime
QString getDataTimeString()
{
SYSTEMTIME sysTime; //系统时间
QString strFileName; //图像保存路径名称
//获取当前时间为图像保存的默认名称
GetLocalTime(&sysTime);
strFileName = QString("%1_%2_%3_%4_%5_%6_%7").arg(sysTime.wYear).arg(sysTime.wMonth)
.arg(sysTime.wDay).arg(sysTime.wHour).arg(sysTime.wMinute).arg(sysTime.wSecond).arg(sysTime.wMilliseconds);
return strFileName;
}
版权声明:本文为weixin_42326676原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。