def exportAsImage(self): filename = unicode(QFileDialog.getSaveFileName(self, self.tr('Save Model As Image'), '', self.tr('PNG files (*.png *.PNG)'))) if not filename: return if not filename.lower().endswith('.png'): filename += '.png' totalRect = QRectF(0, 0, 1, 1) for item in self.scene.items(): totalRect = totalRect.united(item.sceneBoundingRect()) totalRect.adjust(-10, -10, 10, 10) img = QImage(totalRect.width(), totalRect.height(), QImage.Format_ARGB32_Premultiplied) img.fill(Qt.white) painter = QPainter() painter.setRenderHint(QPainter.Antialiasing) painter.begin(img) self.scene.render(painter, totalRect, totalRect) painter.end() img.save(filename)
def exportAsImage(self): filename = unicode( QFileDialog.getSaveFileName(self, self.tr('Save Model As Image'), '', self.tr('PNG files (*.png *.PNG)'))) if not filename: return if not filename.lower().endswith('.png'): filename += '.png' totalRect = QRectF(0, 0, 1, 1) for item in self.scene.items(): totalRect = totalRect.united(item.sceneBoundingRect()) totalRect.adjust(-10, -10, 10, 10) img = QImage(totalRect.width(), totalRect.height(), QImage.Format_ARGB32_Premultiplied) img.fill(Qt.white) painter = QPainter() painter.setRenderHint(QPainter.Antialiasing) painter.begin(img) self.scene.render(painter, totalRect, totalRect) painter.end() img.save(filename)
def renderGeometry(self, geom): f = QgsFeature() f.setGeometry(geom) image = QImage(200, 200, QImage.Format_RGB32) painter = QPainter() ms = QgsMapSettings() extent = geom.geometry().boundingBox() # buffer extent by 10% if extent.width() > 0: extent = extent.buffer((extent.height() + extent.width()) / 20.0) else: extent = extent.buffer(10) ms.setExtent(extent) ms.setOutputSize(image.size()) context = QgsRenderContext.fromMapSettings(ms) context.setPainter(painter) context.setScaleFactor(96 / 25.4) # 96 DPI painter.begin(image) image.fill(QColor(0, 0, 0)) if geom.type() == QGis.Polygon: self.fill_symbol.startRender(context) self.fill_symbol.renderFeature(f, context) self.fill_symbol.stopRender(context) elif geom.type() == QGis.Line: self.line_symbol.startRender(context) self.line_symbol.renderFeature(f, context) self.line_symbol.stopRender(context) elif geom.type() == QGis.Point: self.marker_symbol.startRender(context) self.marker_symbol.renderFeature(f, context) self.marker_symbol.stopRender(context) painter.end() return image
def renderGeometry(self, geom): f = QgsFeature() f.setGeometry(geom) image = QImage(200, 200, QImage.Format_RGB32) painter = QPainter() ms = QgsMapSettings() extent = geom.geometry().boundingBox() # buffer extent by 10% if extent.width() > 0: extent = extent.buffer((extent.height() + extent.width()) / 20.0) else: extent = extent.buffer(10) ms.setExtent(extent) ms.setOutputSize(image.size()) context = QgsRenderContext.fromMapSettings(ms) context.setPainter(painter) context.setScaleFactor(96 / 25.4) # 96 DPI painter.begin(image) image.fill(QColor(0, 0, 0)) if geom.type() == QGis.Polygon: self.fill_symbol.startRender(context) self.fill_symbol.renderFeature(f, context) self.fill_symbol.stopRender(context) elif geom.type() == QGis.Line: self.line_symbol.startRender(context) self.line_symbol.renderFeature(f, context) self.line_symbol.stopRender(context) elif geom.type() == QGis.Point: self.marker_symbol.startRender(context) self.marker_symbol.renderFeature(f, context) self.marker_symbol.stopRender(context) painter.end() return image