from qgis.core import QgsProject, QgsMapSettings, QgsMapRendererParallelJob
from PyQt5.QtGui import QPainter, QColor, QFont
from PyQt5.QtCore import QSize
import os
def export_layer_as_image(layer, output_folder, width, height):
project = QgsProject.instance()
map_settings = QgsMapSettings()
extent = layer.extent()
map_settings.setExtent(extent)
map_settings.setOutputSize(QSize(width, height))
map_settings.setLayers([layer])
map_settings.setBackgroundColor(QColor(255, 255, 255))
output_image_path = os.path.join(output_folder, "{}.png".format(layer.name()))
render = QgsMapRendererParallelJob(map_settings)
render.start()
render.waitForFinished()
image = render.renderedImage()
painter = QPainter()
painter.begin(image)
painter.setPen(QColor(0, 0, 0))
painter.setFont(QFont("Arial", 30))
painter.drawText(10, 40, layer.name())
painter.end()
image.save(output_image_path, "png")
output_folder = "/Users/reuben/Desktop/output/"
width = 1080
height = 1080
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for layer in QgsProject.instance().mapLayers().values():
if layer.type() == QgsMapLayer.VectorLayer:
export_layer_as_image(layer, output_folder, width, height)
print("Exported {}".format(layer.name()))