Как сохранить изображение, используя метку времени в QT
Я создаю графический интерфейс для Windows PC. Я хочу сохранить серию изображений на ПК. Название изображения идентично. Но я хочу добавить их с отметками времени. Итак, как сохранить изображение, используя метку времени в Qt? Кроме того, изображения должны быть сохранены примерно так, как в этом примере: referenceImage<.date.><. time.>jpg, где дата и время соответствуют дате и времени, когда изображение было сохранено на ПК с Windows. Я тоже попробовал следующее
Здесь я реализовал это одним нажатием кнопки:-
void MainWindow::on_generateImagePushButton_clicked()
{
QDate date = QDate::currentDate();
QString dateString = date.toString();
QString path = QString("E:\\QT1\\timeStampTrial\\goldenRefImg[%1].jpg").arg(dateString);
qDebug()<<"path: "<<path;
/*display current time*/
QTime time = QTime::currentTime();
QString timeString = time.toString();
QString path2 = QString("E:\\QT1\\timeStampTrial\\goldenRefImg[%1 %2].jpg").arg(dateString).arg(timeString);
qDebug()<<"path2: "<<path2;
/*converting from QString to char* */
QByteArray bA = path2.toLocal8Bit();
const char *c_charArray = bA.data();
/*saving image*/
IplImage *imgWithTimeStamp = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3);
cvSaveImage(c_charArray, imgWithTimeStamp);
}
Изображение сохраняется с dateStamp, например, например. goldenRefImg[среда, 5 февраля 2014 г.].jpg, когда я использую строку-путь. Но когда я использую string-path2, он НЕ сохраняет с dateStamp & timeStamp, как я ожидал, то есть goldenRefImg [Ср 5 Фев 2014, 10:47:32].jpg Но операторы qDebug, показывающие path и path2, отображаются правильно. Выход приложения:
Starting E:\QT1\timepass-build-desktop-Qt_4_8_1_for_Desktop_-_MSVC2010__Qt_SDK__Debug\debug\timepass.exe...
path: "E:\QT1\timeStampTrial\goldenRefImg[Wed Feb 5 2014].jpg"
path2: "E:\QT1\timeStampTrial\goldenRefImg[Wed Feb 5 2014 10:47:23].jpg"
Теперь я только что вспомнил, что изображение не может быть сохранено с помощью специальных символов, таких как двоеточие: что есть в timeStamp. Можно ли изменить формат времени? Я попробовал так:
path2.replace(":","-");
Но E:\ также преобразуется в E-.Пожалуйста, руководство. Спасибо.
2 ответа
/*display current date*/
QDate date = QDate::currentDate();
QString dateString = date.toString();
QString path = QString("E:\\QT1\\timeStampTrial\\goldenRefImg[%1].jpg").arg(dateString);
qDebug()<<"path: "<<path;
/*display current time*/
QTime time = QTime::currentTime();
QString timeString = time.toString();
QString path2 = QString("E:\\QT1\\timeStampTrial\\goldenRefImg[%1 %2].jpg").arg(dateString).arg(timeString);
qDebug()<<"path2: "<<path2;
path2.replace(":","-");
path2.replace(1,1,":");
QByteArray bA = path2.toLocal8Bit();
const char *c_charArray = bA.data();
IplImage *imgWithTimeStamp = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3);
cvSaveImage(c_charArray, imgWithTimeStamp);
Спасибо за все ваши предложения @ Дмитрий Сазонов и @Frank Osterfeld
const QDateTime now = QDateTime::currentDateTime();
const QString timestamp = now.toString(QLatin1String("yyyyMMdd-hhmmsszzz"));
const QString filename = QString::fromLatin1("/some/path/someimage-%1.jpg").arg(timestamp);
Это берет текущую дату / время, преобразует ее в строку, используя QDateTime:: toString () (документация перечисляет параметры форматирования), и создает имя файла из него. Тогда просто используйте filename
с QImage::save() или QImageWriter.