void draw(SkCanvas* canvas, const SkRect& rect, const SkSize& deviceSize, SkPaint::FilterLevel filterLevel, SkImageFilter* input = NULL) { SkRect dstRect; canvas->getTotalMatrix().mapRect(&dstRect, rect); canvas->save(); SkScalar deviceScaleX = SkScalarDiv(deviceSize.width(), dstRect.width()); SkScalar deviceScaleY = SkScalarDiv(deviceSize.height(), dstRect.height()); canvas->translate(rect.x(), rect.y()); canvas->scale(deviceScaleX, deviceScaleY); canvas->translate(-rect.x(), -rect.y()); SkMatrix matrix; matrix.setScale(SkScalarInvert(deviceScaleX), SkScalarInvert(deviceScaleY)); SkAutoTUnref<SkImageFilter> imageFilter( SkMatrixImageFilter::Create(matrix, filterLevel, input)); SkPaint filteredPaint; filteredPaint.setImageFilter(imageFilter.get()); canvas->saveLayer(&rect, &filteredPaint); SkPaint paint; paint.setColor(0xFF00FF00); SkRect ovalRect = rect; ovalRect.inset(SkIntToScalar(4), SkIntToScalar(4)); canvas->drawOval(ovalRect, paint); canvas->restore(); // for saveLayer canvas->restore(); }
void kuwaharaFilter::videoFilter(const string &src_path, const string &dst_path) { VideoCapture v_reader = VideoCapture(src_path.c_str()); double reszie_ratio = 1.0; if ( v_reader.isOpened() ) { Mat temp; v_reader >> temp; resizeMat(temp, reszie_ratio); VideoWriter v_writer = VideoWriter(dst_path.c_str(), CV_FOURCC('P','I','M','1'), 30, temp.size()); while (v_reader.grab()) { resizeMat(temp, reszie_ratio); temp = imageFilter(temp, 3); temp.convertTo(temp, CV_8UC3); v_writer.write(temp); v_reader >> temp; } v_writer.release(); }
// This detector detects that image filter phase of the pixel pipeline receives the correct value. static void install_detector_image_filter(SkPaint* drawPaint) { sk_sp<SkColorFilter> colorFilter(make_detector_color_filter()); sk_sp<SkImageFilter> imageFilter( SkColorFilterImageFilter::Make(std::move(colorFilter), sk_ref_sp(drawPaint->getImageFilter()))); drawPaint->setImageFilter(std::move(imageFilter)); }
void draw(SkCanvas* canvas, const SkRect& rect, const SkBitmap& bitmap, const SkMatrix& matrix, SkFilterQuality filter) { SkAutoTUnref<SkImageFilter> imageFilter( SkImageFilter::CreateMatrixFilter(matrix, filter)); SkPaint paint; paint.setImageFilter(imageFilter.get()); canvas->saveLayer(&rect, &paint); canvas->drawBitmap(bitmap, 0, 0); canvas->restore(); }
Mat kuwaharaFilter::imageFileFilter(const string &img_path, int iterations) { Mat src_img = imread(img_path.c_str()); src_img.convertTo(src_img, CV_64FC3); src_img /= 255.0; return imageFilter(src_img, iterations); }
/*! \brief Execute a file dialog and render the plot to the selected file \param plot Plot widget \param documentName Default document name \param sizeMM Size for the document in millimeters. \param resolution Resolution in dots per Inch (dpi) \return True, when exporting was successful \sa renderDocument() */ bool QwtPlotRenderer::exportTo( QwtPlot *plot, const QString &documentName, const QSizeF &sizeMM, int resolution ) { if ( plot == NULL ) return false; QString fileName = documentName; // What about translation #ifndef QT_NO_FILEDIALOG const QList<QByteArray> imageFormats = QImageWriter::supportedImageFormats(); QStringList filter; #ifndef QT_NO_PRINTER filter += QString( "PDF " ) + tr( "Documents" ) + " (*.pdf)"; #endif #ifndef QWT_NO_SVG filter += QString( "SVG " ) + tr( "Documents" ) + " (*.svg)"; #endif #ifndef QT_NO_PRINTER filter += QString( "Postscript " ) + tr( "Documents" ) + " (*.ps)"; #endif if ( imageFormats.size() > 0 ) { QString imageFilter( tr( "Images" ) ); imageFilter += " ("; for ( int i = 0; i < imageFormats.size(); i++ ) { if ( i > 0 ) imageFilter += " "; imageFilter += "*."; imageFilter += imageFormats[i]; } imageFilter += ")"; filter += imageFilter; } fileName = QFileDialog::getSaveFileName( NULL, tr( "Export File Name" ), fileName, filter.join( ";;" ), NULL, QFileDialog::DontConfirmOverwrite ); #endif if ( fileName.isEmpty() ) return false; renderDocument( plot, fileName, sizeMM, resolution ); return true; }
void MainWindow::exportDocument() { #ifndef QT_NO_PRINTER QString fileName = "bode.pdf"; #else QString fileName = "bode.png"; #endif #ifndef QT_NO_FILEDIALOG const QList<QByteArray> imageFormats = QImageWriter::supportedImageFormats(); QStringList filter; filter += "PDF Documents (*.pdf)"; #ifndef QWT_NO_SVG filter += "SVG Documents (*.svg)"; #endif filter += "Postscript Documents (*.ps)"; if ( imageFormats.size() > 0 ) { QString imageFilter( "Images (" ); for ( int i = 0; i < imageFormats.size(); i++ ) { if ( i > 0 ) imageFilter += " "; imageFilter += "*."; imageFilter += imageFormats[i]; } imageFilter += ")"; filter += imageFilter; } fileName = QFileDialog::getSaveFileName( this, "Export File Name", fileName, filter.join( ";;" ), NULL, QFileDialog::DontConfirmOverwrite ); #endif if ( !fileName.isEmpty() ) { QwtPlotRenderer renderer; // flags to make the document look like the widget renderer.setDiscardFlag( QwtPlotRenderer::DiscardBackground, false ); renderer.setLayoutFlag( QwtPlotRenderer::KeepFrames, true ); renderer.renderDocument( d_plot, fileName, QSizeF( 300, 200 ), 85 ); } }
void LevelOneMuChart::exportLevelOnePlotToImage() { #ifndef QT_NO_PRINTER QString fileName = "MuChartOneLevel.pdf"; #else QString fileName = "MuChartOneLevel.png"; #endif #ifndef QT_NO_FILEDIALOG const QList<QByteArray> imageFormats = QImageWriter::supportedImageFormats(); QStringList filter; filter += tr("PDF Documents (*.pdf)"); #ifndef QWT_NO_SVG filter += tr("SVG Documents (*.svg)"); #endif filter += tr("Postscript Documents (*.ps)"); if (imageFormats.size() > 0) { QString imageFilter(tr("Images (")); for (int i = 0; i < imageFormats.size(); i++) { if (i > 0) imageFilter += " "; imageFilter += "*."; imageFilter += imageFormats[i]; } imageFilter += ")"; filter += imageFilter; } fileName = QFileDialog::getSaveFileName( this, tr("Export File Name"), fileName, filter.join(";;"), NULL, QFileDialog::DontConfirmOverwrite); #endif if (!fileName.isEmpty()) { QwtPlotRenderer renderer; renderer.setDiscardFlag(QwtPlotRenderer::DiscardBackground, false); renderer.renderDocument(this, fileName, QSizeF(300, 200), 85); } }
void igramIntensity::on_pushButton_clicked() { QSettings set; QString path = set.value("mirrorConfigFile").toString(); QFile fn(path); QFileInfo info(fn.fileName()); QString dd = info.dir().absolutePath(); const QList<QByteArray> imageFormats = QImageWriter::supportedImageFormats(); QStringList filter; if ( imageFormats.size() > 0 ) { QString imageFilter( tr( "Images" ) ); imageFilter += " ("; for ( int i = 0; i < imageFormats.size(); i++ ) { if ( i > 0 ) imageFilter += " "; imageFilter += "*."; imageFilter += imageFormats[i]; } imageFilter += ")"; filter += imageFilter; } QString fName = QFileDialog::getSaveFileName(0, tr("Save stats plot"), dd + "//intensity.jpg",filter.join( ";;" )); if (fName.isEmpty()) return; const QSizeF size = this->size(); const QRect imageRect = QRect(0,0,size.width(),size.height()); QImage image( imageRect.size(), QImage::Format_ARGB32 ); QPainter painter( &image ); QwtPlotRenderer renderer; this->render( &painter); painter.end(); image.save( fName, QFileInfo( fName ).suffix().toLatin1() ); }
void plotter::save() { QString fileName = "distrib.svg"; const QList<QByteArray> imageFormats = QImageWriter::supportedImageFormats(); QStringList filter; filter += "SVG Documents (*.svg)"; filter += "PDF Documents (*.pdf)"; filter += "Postscript Documents (*.ps)"; if ( imageFormats.size() > 0 ) { QString imageFilter("Images ("); for ( int i = 0; i < imageFormats.size(); i++ ) { if ( i > 0 ) imageFilter += " "; imageFilter += "*."; imageFilter += imageFormats[i]; } imageFilter += ")"; filter += imageFilter; } fileName = QFileDialog::getSaveFileName( this, "Export File Name", fileName, filter.join(";;"), NULL, QFileDialog::DontConfirmOverwrite); if ( !fileName.isEmpty() ) { QwtPlotRenderer renderer; renderer.setDiscardFlag(QwtPlotRenderer::DiscardBackground, false); renderer.renderDocument(&plot, fileName, plot.size(), 85);//QSizeF(300, 200) } }