void GraphicColumnWidget::slotExportToJpg() { QString fn = QFileDialog::getSaveFileName(this, tr("Export Profile To JPG..."), QDir::currentPath(), tr("JPG Files (*.jpg *.JPG)")); if (fn.isEmpty()) { return; } QImageWriter w; w.setFileName(fn); w.setFormat("JPG"); w.setQuality(100); 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())); } }
static QByteArray randomJPEGByteArray(int w=512, int h=512, int q=85 ) { QImage image=randomImage(w,h); QBuffer bu; bu.open(QBuffer::WriteOnly); QImageWriter iw; iw.setFormat("jpeg"); iw.setDevice(&bu); iw.setOptimizedWrite(true ); iw.setQuality(q); iw.setCompression(9); iw.setProgressiveScanWrite(true ); iw.write( image ); bu.close(); QByteArray ba=bu.buffer(); //utility::byteArrayToFile("random_test.jpeg",ba ); //qDebug()<<"Random JPEG image of size "<<w<<"x"<<h<<" was "<< utility::humanReadableSize(ba.size())<< "("<<(qreal)ba.size()/((qreal)w*h) << " bytes/pixel)"; return ba; }
void OpenGLHelpers::takeSnapshot(QString filename, int width, int height, int startY){ uchar * imageData = new uchar[4*width * height]; glReadPixels(0, startY,width, height,GL_BGRA,GL_UNSIGNED_BYTE,(void *)imageData); int * vals = (int*)imageData, * lo, * hi; for(int row = 0; row < height/2; ++row){ hi = vals+row*width; lo = vals + (height - 1 - row)*width; for(int i = 0; i < width ; ++i) std::swap(hi[i],lo[i]); } QImage img = QImage(imageData,width,height,QImage::Format_ARGB32); QImageWriter * writer = new QImageWriter(filename); writer->setFormat("jpg"); writer->setQuality(100); writer->write(img); delete writer; delete [] imageData; }