Bug report #10887
Updated by Giovanni Manghi almost 8 years ago
*Qgis 2.4 version return empty QgsComposition from standalone application*
QgsComposition empty from QgsMapRenderer()
This is the code that work with 2.2
if I use myMapRenderer=iface.mapCanvas().mapRenderer() from python console it work fine
project = "myproject.qgs"
QgsProject.instance().setFileName(project)
QgsProject.instance().read()
layertot = QgsMapLayerRegistry.instance().mapLayers()
myMapRenderer = QgsMapRenderer()
myMapRenderer.setLayerSet(layertot.keys())
mapRectangle = QgsRectangle(xmin,ymin,xmax,ymax)
myMapRenderer.setExtent(mapRectangle)
comp = QgsComposition(myMapRenderer)
comp.setPlotStyle(QgsComposition.Print)
comp.setPaperSize(180,180)
comp.setPrintResolution(150)
composerMap = QgsComposerMap(comp, 0,0,180,180)
comp.addItem(composerMap)
dpi = comp.printResolution()
dpmm = dpi / 25.4
width = int(dpmm * comp.paperWidth())
height = int(dpmm * comp.paperHeight())
image = QImage(QSize(width, height), QImage.Format_ARGB32)
image.setDotsPerMeterX(dpmm * 1000)
image.setDotsPerMeterY(dpmm * 1000)
image.fill(0)
imagePainter = QPainter(image)
sourceArea = QRectF(0, 0, comp.paperWidth(), comp.paperHeight())
targetArea = QRectF(0, 0, width, height)
comp.render(imagePainter, targetArea, sourceArea)
imagePainter.end()
image.save("c:/temp/test.png", "png")
QgsComposition empty from QgsMapRenderer()
This is the code that work with 2.2
if I use myMapRenderer=iface.mapCanvas().mapRenderer() from python console it work fine
project = "myproject.qgs"
QgsProject.instance().setFileName(project)
QgsProject.instance().read()
layertot = QgsMapLayerRegistry.instance().mapLayers()
myMapRenderer = QgsMapRenderer()
myMapRenderer.setLayerSet(layertot.keys())
mapRectangle = QgsRectangle(xmin,ymin,xmax,ymax)
myMapRenderer.setExtent(mapRectangle)
comp = QgsComposition(myMapRenderer)
comp.setPlotStyle(QgsComposition.Print)
comp.setPaperSize(180,180)
comp.setPrintResolution(150)
composerMap = QgsComposerMap(comp, 0,0,180,180)
comp.addItem(composerMap)
dpi = comp.printResolution()
dpmm = dpi / 25.4
width = int(dpmm * comp.paperWidth())
height = int(dpmm * comp.paperHeight())
image = QImage(QSize(width, height), QImage.Format_ARGB32)
image.setDotsPerMeterX(dpmm * 1000)
image.setDotsPerMeterY(dpmm * 1000)
image.fill(0)
imagePainter = QPainter(image)
sourceArea = QRectF(0, 0, comp.paperWidth(), comp.paperHeight())
targetArea = QRectF(0, 0, width, height)
comp.render(imagePainter, targetArea, sourceArea)
imagePainter.end()
image.save("c:/temp/test.png", "png")