diff options
Diffstat (limited to 'helper.cpp')
-rw-r--r-- | helper.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
@@ -26,6 +26,9 @@ #include <QJsonObject> #include <QPainter> #include <QDir> +#include <QRegularExpression> +#include <QSqlDatabase> +#include <QSqlQuery> #include <stdio.h> @@ -313,6 +316,54 @@ namespace Helper { return QVariant(); } + PicData convertToPng(PicData data){ + if(data.at(2) != "image/jpeg"){ + return PicData(); + } + PicData retval; + QString newFn = data.at(0).toString(); + newFn.replace(QRegularExpression("(jpg|jpeg)$", QRegularExpression::CaseInsensitiveOption), "png"); + Magick::Image img; + img.read(data.at(3).toByteArray().data()); + QTemporaryFile outFile("shemovconvertXXXXXX.png"); + if(outFile.open()){ + try { + img.write(outFile.fileName().toStdString()); + } + catch(Magick::Exception &e) { + return retval; + } + outFile.rename(newFn); + QString newMd5 = md5Sum(outFile.fileName()); + QString dest = moveToArchive(outFile.fileName(), newMd5, true); + QFileInfo destFi(dest); + if(!destFi.exists()){ + return PicData(); + } + QString mt = mimeType(dest); + retval = data; + retval[0] = newFn; //Filename + retval[1] = destFi.size(); //Size + retval[2] = mt; //Mime-Type + retval[3] = dest; //Full path + retval[6] = newMd5; //md5sum + QSqlDatabase db = QSqlDatabase::database("treedb"); + int id = data.at(4).toInt(); + QSqlQuery q(db); + q.prepare("UPDATE pics SET tfilename = :fn, cmd5sum = :md5, isize = :size, tformat = :format WHERE ipicsid = :id"); + q.bindValue(":fn", newFn); + q.bindValue(":md5", newMd5); + q.bindValue(":size", destFi.size()); + q.bindValue(":format", mt); + q.bindValue(":id", id); + + if(q.exec()){ + return retval; + } + } + return PicData(); + } + Duration::Duration() : mHours(0), mMinutes(0), mSeconds(0) {} Duration::Duration(qint64 seconds){ |