def _img_diff(self, image, control_image, max_diff, max_size_diff=QSize(), outputFormat='PNG'): if outputFormat == 'PNG': extFile = 'png' elif outputFormat == 'JPG': extFile = 'jpg' elif outputFormat == 'WEBP': extFile = 'webp' else: raise RuntimeError('Yeah, new format implemented') temp_image = os.path.join(tempfile.gettempdir(), "%s_result.%s" % (control_image, extFile)) with open(temp_image, "wb") as f: f.write(image) if outputFormat != 'PNG': return (True, "QgsRenderChecker can only be used for PNG") control = QgsMultiRenderChecker() control.setControlPathPrefix("qgis_server") control.setControlName(control_image) control.setRenderedImage(temp_image) if max_size_diff.isValid(): control.setSizeTolerance(max_size_diff.width(), max_size_diff.height()) return control.runTest(control_image, max_diff), control.report()
def _pdf_diff(self, pdf, control_image, max_diff, max_size_diff=QSize(), dpi=96): temp_pdf = os.path.join(tempfile.gettempdir(), "%s_result.pdf" % control_image) with open(temp_pdf, "wb") as f: f.write(pdf) temp_image = os.path.join(tempfile.gettempdir(), "%s_result.png" % control_image) self._pdf_to_png(temp_pdf, temp_image, dpi=dpi, page=1) control = QgsMultiRenderChecker() control.setControlPathPrefix("qgis_server") control.setControlName(control_image) control.setRenderedImage(temp_image) if max_size_diff.isValid(): control.setSizeTolerance(max_size_diff.width(), max_size_diff.height()) return control.runTest(control_image, max_diff), control.report()
def _img_diff(self, image, control_image, max_diff, max_size_diff=QSize(), outputJpg=False): extFile = 'png' if outputJpg: extFile = 'jpg' temp_image = os.path.join(tempfile.gettempdir(), "%s_result.%s" % (control_image, extFile)) with open(temp_image, "wb") as f: f.write(image) if outputJpg: return (True, "QgsRenderChecker can't be used for JPG images") control = QgsMultiRenderChecker() control.setControlPathPrefix("qgis_server") control.setControlName(control_image) control.setRenderedImage(temp_image) if max_size_diff.isValid(): control.setSizeTolerance(max_size_diff.width(), max_size_diff.height()) return control.runTest(control_image, max_diff), control.report()
def checkImage(self, name, reference_image, rendered_image, size_tolerance=0): checker = QgsMultiRenderChecker() checker.setControlPathPrefix("layout_exporter") checker.setControlName("expected_layoutexporter_" + reference_image) checker.setRenderedImage(rendered_image) checker.setColorTolerance(2) checker.setSizeTolerance(size_tolerance, size_tolerance) result = checker.runTest(name, 20) self.report += checker.report() print((self.report)) return result
def checkImage(self, name, reference_image, rendered_image, size_tolerance=0): checker = QgsMultiRenderChecker() checker.setControlPathPrefix("layout_exporter") checker.setControlName("expected_layoutexporter_" + reference_image) checker.setRenderedImage(rendered_image) checker.setColorTolerance(2) checker.setSizeTolerance(size_tolerance, size_tolerance) result = checker.runTest(name, 20) self.report += checker.report() print((self.report)) return result
def imageCheck(self, name, reference_image, image, size_tolerance=0): TestQgsColorRampLegendNode.report += "<h2>Render {}</h2>\n".format(name) temp_dir = QDir.tempPath() + '/' file_name = temp_dir + name + ".png" image.save(file_name, "PNG") checker = QgsMultiRenderChecker() checker.setControlPathPrefix("color_ramp_legend_node") checker.setControlName("expected_" + reference_image) checker.setRenderedImage(file_name) checker.setColorTolerance(2) checker.setSizeTolerance(size_tolerance, size_tolerance) result = checker.runTest(name, 20) TestQgsColorRampLegendNode.report += checker.report() return result