void GraphicColumnWidget::slotExportToTiff() { QString fn = QFileDialog::getSaveFileName(this, tr("Export Profile To Tiff..."), QDir::currentPath(), tr("TIFF Files (*.tif *.tiff *.Tif *.TIF *.TIFF *.Tiff)")); if (fn.isEmpty()) { return; } QImageWriter w; w.setFileName(fn); w.setFormat("TIFF"); QImage img(QSize((int)(_scene->width()), (int)(_scene->height())), QImage::Format_RGB32); QPainter painter(&img); painter.setRenderHint(QPainter::Antialiasing); _scene->render(&painter); painter.end(); if (w.write(img)) { QMessageBox::information(this, tr("Export Completed"), tr("Profile exported to <b>%1</b>.").arg(fn)); } else { QMessageBox::critical(this, tr("Export Failed"), tr("Could not export Profile: %1").arg(w.errorString())); } }
int LoadImage::writeToDB(const QByteArray &pdata, const QString pkgname, QString &errMsg) { if (pdata.isEmpty()) { errMsg = TR("<font color=orange>The image %1 is empty.</font>") .arg(_name); return -2; } QString encodeddata; if (DEBUG) qDebug("LoadImage::writeToDB(): image starts with %s", pdata.left(10).data()); if (QString(pdata.left(pdata.indexOf("\n"))).contains(QRegExp("^\\s*begin \\d+ \\S+"))) { if (DEBUG) qDebug("LoadImage::writeToDB() image is already uuencoded"); encodeddata = pdata; } else { // there's just GOT to be a better way to do this QImageWriter imageIo; QBuffer imageBuffer; imageBuffer.open(QIODevice::ReadWrite); imageIo.setDevice(&imageBuffer); imageIo.setFormat(_filename.right(_filename.size() - _filename.lastIndexOf(".") - 1).toAscii()); if (DEBUG) qDebug("LoadImage::writeToDB() image has format %s", imageIo.format().data()); QImage image; image.loadFromData(pdata); if (!imageIo.write(image)) { errMsg = TR("<font color=orange>Error processing image %1: " "<br>%2</font>") .arg(_name).arg(imageIo.errorString()); return -3; } imageBuffer.close(); encodeddata = QUUEncode(imageBuffer); if (DEBUG) qDebug("LoadImage::writeToDB() image was uuencoded: %s", qPrintable(encodeddata.left(160))); } QSqlQuery select; QSqlQuery upsert; int imageid = -1; int pkgheadid = -1; int pkgitemid = -1; if (pkgname.isEmpty()) select.prepare(QString("SELECT image_id, -1, -1" " FROM %1image " " WHERE (image_name=:name);") .arg(_system ? "" : "pkg")); else select.prepare(_pkgitemQueryStr); select.bindValue(":name", _name); select.bindValue(":pkgname", pkgname); select.bindValue(":grade", _grade); select.bindValue(":type", _pkgitemtype); select.exec(); if(select.first()) { imageid = select.value(0).toInt(); pkgheadid = select.value(1).toInt(); pkgitemid = select.value(2).toInt(); } else if (select.lastError().type() != QSqlError::NoError) { QSqlError err = select.lastError(); errMsg = _sqlerrtxt.arg(_filename).arg(err.driverText()).arg(err.databaseText()); return -5; } if (imageid >= 0) upsert.prepare(QString("UPDATE %1image " " SET image_data=:source," " image_descrip=:notes " " WHERE (image_id=:id); ") .arg(_system ? "" : "pkg")); else { upsert.prepare("SELECT NEXTVAL('image_image_id_seq');"); upsert.exec(); if (upsert.first()) imageid = upsert.value(0).toInt(); else if (upsert.lastError().type() != QSqlError::NoError) { QSqlError err = upsert.lastError(); errMsg = _sqlerrtxt.arg(_filename).arg(err.driverText()).arg(err.databaseText()); return -6; } upsert.prepare(QString("INSERT INTO %1image " "(image_id, image_name, image_data, image_descrip) " "VALUES (:id, :name, :source, :notes);") .arg(_system ? "" : "pkg")); } upsert.bindValue(":id", imageid); upsert.bindValue(":source", encodeddata); upsert.bindValue(":notes", _comment); upsert.bindValue(":name", _name); if (!upsert.exec()) { QSqlError err = upsert.lastError(); errMsg = _sqlerrtxt.arg(_filename).arg(err.driverText()).arg(err.databaseText()); return -7; } if (pkgheadid >= 0) { int tmp = upsertPkgItem(pkgitemid, pkgheadid, imageid, errMsg); if (tmp < 0) return tmp; } return imageid; }
int LoadImage::writeToDB(const QByteArray &pdata, const QString pkgname, QString &errMsg) { if (pdata.isEmpty()) { errMsg = TR("<font color=orange>The image %1 is empty.</font>") .arg(_name); return -2; } QByteArray encodeddata; if (DEBUG) qDebug("LoadImage::writeToDB(): image starts with %s", pdata.left(10).data()); if (QString(pdata.left(pdata.indexOf("\n"))).contains(QRegExp("^\\s*begin \\d+ \\S+"))) { if (DEBUG) qDebug("LoadImage::writeToDB() image is already uuencoded"); encodeddata = pdata; } else { // there's just GOT to be a better way to do this QImageWriter imageIo; QBuffer imageBuffer; imageBuffer.open(QIODevice::ReadWrite); imageIo.setDevice(&imageBuffer); imageIo.setFormat(_filename.right(_filename.size() - _filename.lastIndexOf(".") - 1).toAscii()); if (DEBUG) qDebug("LoadImage::writeToDB() image has format %s", imageIo.format().data()); QImage image; image.loadFromData(pdata); if (!imageIo.write(image)) { errMsg = TR("<font color=orange>Error processing image %1: " "<br>%2</font>") .arg(_name).arg(imageIo.errorString()); return -3; } imageBuffer.close(); encodeddata = QUUEncode(imageBuffer).toAscii(); if (DEBUG) qDebug("LoadImage::writeToDB() image was uuencoded: %s", encodeddata.left(160).data()); } _selectMql = new MetaSQLQuery("SELECT image_id, -1, -1" " FROM <? literal(\"tablename\") ?> " " WHERE (image_name=<? value(\"name\") ?>);"); _updateMql = new MetaSQLQuery("UPDATE <? literal(\"tablename\") ?> " " SET image_data=<? value(\"source\") ?>," " image_descrip=<? value(\"notes\") ?> " " WHERE (image_id=<? value(\"id\") ?>) " "RETURNING image_id AS id;"); _insertMql = new MetaSQLQuery("INSERT INTO <? literal(\"tablename\") ?> (" " image_id, image_name, image_data, image_descrip" ") VALUES (" " DEFAULT, <? value(\"name\") ?>," " <? value(\"source\") ?>, <? value(\"notes\") ?>) " "RETURNING image_id AS id;"); ParameterList params; params.append("tablename", "image"); return Loadable::writeToDB(encodeddata, pkgname, errMsg, params); }