def render(self): try: if (self.meshlayer.hydrauparser != None and self.meshlayer.hydrauparser.path != None and self.meshlayer.meshrenderer != None): bool1, image1, image2 = self.meshlayer.meshrenderer.getimage( self.meshlayer, self.rendererContext) else: image1 = QtGui.QImage() image2 = None bool1 = True painter = self.rendererContext.painter() painter.save() painter.drawImage(0, 0, image1) if image2: painter.drawImage(0, 0, image2) painter.restore() return bool1 except Exception as e: self.meshlayer.propertiesdialog.errorMessage("Renderer Error") return False
def __init__(self, parent=None): super(ScribbleArea, self).__init__(parent) self.setAttribute(QtCore.Qt.WA_StaticContents) self.modified = False self.scribbling = False imageSize = QtCore.QSize(500, 500) self.image = QtGui.QImage(imageSize, QtGui.QImage.Format_RGB16) self.userimage = None self.painter = QtGui.QPainter() self.lastPoint = QtCore.QPoint() self.pen = QtGui.QPen()
def __init__(self, nom): QtWidgets.QMainWindow.__init__(self) self.ui = Ui_graphicsWindow() self.ui.setupUi(self, nom) self.ui.graphicsView.resizeEvent = self.gwResizeEvent self.currentRect = None self.myRect = QtCore.QRect() self.myPen = QtGui.QPen() self.rayon = 20 self.ui.widget.paintEvent = self.draw cursorPath = ":/Anaglyph/Icons/cursor3x3.png" cursorImage = QtGui.QImage(cursorPath) cursorPix = QtGui.QPixmap.fromImage(cursorImage) self.invisibleCursor = QtGui.QCursor(cursorPix) self.normalCursor = self.cursor()
def canvasChangedWithSameBBox(self): return (QtGui.QImage(), QtGui.QImage())
def canvasPaned(self): return (QtGui.QImage(), QtGui.QImage())
def getimage(self, meshlayer, rendererContext): #initialize rendered image dimension DEBUG = False if DEBUG: self.debugtext = [] self.timestart = time.clock() painter = rendererContext.painter() self.__imageChangedMutex.lock() self.rendererContext = qgis.core.QgsRenderContext(rendererContext) self.rendererContext.setPainter(None) self.ext = self.rendererContext.extent() self.rect = [ float(self.ext.xMinimum()), float(self.ext.xMaximum()), float(self.ext.yMinimum()), float(self.ext.yMaximum()) ] if False: self.sizepx = painter.viewport().size( ) #size in pixel - notworking when printing else: ratio = 1.0 mupp = float(rendererContext.mapToPixel().mapUnitsPerPixel()) #self.sizepx = [ round(((rect[1] - rect[0] )/mupp/ratio),2) , round(((rect[3] - rect[2] )/mupp/ratio),2) ] self.sizepx = QtCore.QSize( int(((self.rect[1] - self.rect[0]) / mupp / ratio)), int(((self.rect[3] - self.rect[2]) / mupp / ratio))) self.dpi = rendererContext.painter().device().logicalDpiX() self.width = float((self.sizepx.width())) / float( self.dpi) #widht of canvas in inches self.lenght = float((self.sizepx.height())) / float( self.dpi) #height of canvas in inches #self.__img = None self.__imageChangedMutex.unlock() try: #*********************************************************************** #Case 1 : mapcanvas panned if (self.previousdrawrenderersizepx == self.sizepx and self.previousdrawtime == meshlayer.time_displayed and self.previousdrawparam == meshlayer.param_displayed and self.lvl_contour == self.previousdrawlvl and self.alpha_displayed == self.previousdrawalpha and self.previousdrawcmcontour == self.cmap_contour_raw and meshlayer.forcerefresh == False): if DEBUG: self.debugtext += [ 'deplacement : ' + str(round(time.clock() - self.timestart, 3)) ] if self.alreadypanned: #the whole mesh has been regenerated img1, img2 = self.canvasPaned() else: #maybe working with case 2 : need t oregenerate the whole mesh img1, img2 = self.canvasCreation() self.alreadypanned = True #Case 2 : figure changed (time,param) with the same mapcanvas dimension elif self.previousdrawrenderersizepx == self.sizepx and meshlayer.forcerefresh == False: #update meshlayer parameters self.previousdrawparam = meshlayer.param_displayed self.previousdrawlvl = self.lvl_contour self.previousdrawtime = meshlayer.time_displayed self.previousdrawalpha = self.alpha_displayed self.previousdrawrenderersizepx = self.sizepx self.previousdrawcmcontour = self.cmap_contour_raw self.alreadypanned = False if DEBUG: self.debugtext += [ 'paramchanged : ' + str(round(time.clock() - self.timestart, 3)) ] img1, img2 = self.canvasChangedWithSameBBox() #*********************************************************************** #Case 3 : new figure else: #update meshlayer parameters self.previousdrawparam = meshlayer.param_displayed self.previousdrawlvl = self.lvl_contour self.previousdrawtime = meshlayer.time_displayed self.previousdrawalpha = self.alpha_displayed self.previousdrawrenderersizepx = self.sizepx self.previousdrawcmcontour = self.cmap_contour_raw self.alreadypanned = False if self.meshlayer.forcerefresh == True: self.meshlayer.forcerefresh = False if DEBUG: self.debugtext += [ 'new fig : ' + str(round(time.clock() - self.timestart, 3)) ] img1, img2 = self.canvasCreation() if DEBUG: self.debugtext += [ 'fin : ' + str(round(time.clock() - self.timestart, 3)) ] if DEBUG: self.meshlayer.propertiesdialog.textBrowser_2.append( str(self.debugtext)) return (True, img1, img2) except Exception as e: meshlayer.propertiesdialog.textBrowser_2.append( 'Get rendered image : ' + str(e)) return (False, QtGui.QImage(), QtGui.QImage())
def canvasCreation(self): return (QtGui.QImage(), QtGui.QImage())
from __future__ import print_function import numpy as np from qgis.PyQt import QtGui import os, pickle, sys path = os.path.abspath(os.path.split(__file__)[0]) pixmaps = {} for f in os.listdir(path): if not f.endswith('.png'): continue print(f) img = QtGui.QImage(os.path.join(path, f)) ptr = img.bits() ptr.setsize(img.byteCount()) arr = np.asarray(ptr).reshape(img.height(), img.width(), 4).transpose(1,0,2) pixmaps[f] = pickle.dumps(arr) ver = sys.version_info[0] fh = open(os.path.join(path, 'pixmapData_%d.py' %ver), 'w') fh.write("import numpy as np; pixmapData=%s" % repr(pixmaps))
def showEvent(self, event): newImage = QtGui.QImage(self.size(), QtGui.QImage.Format_RGB32) newImage.fill(QtGui.qRgb(255, 255, 255)) self.image = newImage self.render_userimage()
def _csmapToFile(self, dem, layer_set, outdir): if dem.rasterUnitsPerPixelX() == dem.rasterUnitsPerPixelY(): dx = dem.rasterUnitsPerPixelX() dy = dem.rasterUnitsPerPixelY() w = dem.dataProvider().xSize() h = dem.dataProvider().ySize() elif dem.rasterUnitsPerPixelX() > dem.rasterUnitsPerPixelY(): dx = dem.rasterUnitsPerPixelY() dy = dem.rasterUnitsPerPixelY() w = int(dem.dataProvider().xSize() * (dem.rasterUnitsPerPixelX() / dem.rasterUnitsPerPixelY())) h = dem.dataProvider().ySize() else: dx = dem.rasterUnitsPerPixelX() dy = dem.rasterUnitsPerPixelX() w = dem.dataProvider().xSize() h = int(dem.dataProvider().ySize() * (dem.rasterUnitsPerPixelY() / dem.rasterUnitsPerPixelX())) img = QtGui.QImage(QtCore.QSize(w, h), QtGui.QImage.Format_ARGB32_Premultiplied) color = QtGui.QColor(255, 255, 255) img.fill(color.rgb()) setting = QgsMapSettings() setting.setExtent(dem.dataProvider().extent()) setting.setDestinationCrs(dem.crs()) setting.setOutputSize(QtCore.QSize(w, h)) setting.setLayers(layer_set) setting.updateDerived() p = QtGui.QPainter() p.begin(img) render = QgsMapRendererCustomPainterJob(setting, p) render.start() render.waitForFinished() p.end() temp = tempfile.NamedTemporaryFile() img.save(temp.name + ".tif", "tif") src_ds = gdal.Open(temp.name + ".tif") driver = gdal.GetDriverByName("GTiff") filepath, filename = os.path.split( str(dem.dataProvider().dataSourceUri())) dst_file = outdir + r"/csmap_" + filename dst_ds = driver.CreateCopy(dst_file, src_ds, 0) geo_trans = [ dem.dataProvider().extent().xMinimum(), dx, 0, dem.dataProvider().extent().yMaximum(), 0, dy * -1 ] dst_ds.SetGeoTransform(geo_trans) dst_ds.SetProjection(str(dem.crs().toWkt())) dst_ds = None src_ds = None temp.close() self.result_files.append(dst_file)