Как сохранить изображение, используя метку времени в 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.

Другие вопросы по тегам