def save_png(self): pdf_folder = self.settings.value('pdf_folder') file_name, _ = QFileDialog.getSaveFileName(self, "Save an image file.", dir=pdf_folder, filter='Images (*.png)') if not file_name: return writer = QPixmap(1000, 2000) self.paint_puzzle(writer) writer.save(file_name) self.settings.setValue('pdf_folder', os.path.dirname(file_name))
def save_image(self) -> None: """ Save the modified image file. If the current pixmap has been scaled, we need to load a non-scaled pixmap from the original file and re-apply the transformations that have been performed to prevent it from being saved as the scaled-down image. """ if self.pixmap_is_scaled: rotation = self.pixmap.rotation() mirror = self.pixmap.scale() < 0 pix = QPixmap(self.files[self.index]) pix = pix.transformed(QTransform().rotate(rotation)) if mirror: pix = pix.transformed(QTransform().scale(-1, 1)) pix.save(self.files[self.index], quality=-1) else: self.pixmap.pixmap().save(self.files[self.index], quality=-1) self.save_tags()
def main(): parser = parse_args() pov_file: Path = parser.pov_file stem = pov_file.stem shadow_stem = re.sub(r'-(\d+)$', r'-shadow-\1', stem) temp_file = pov_file.parent / (stem + '-temp.png') temp_shadow_file = pov_file.parent / (shadow_stem + '-temp.png') png_file = pov_file.parent / (shadow_stem + '.png') current_images = Path(__file__).parent.parent / 'shibumi_images' current_file = current_images / png_file.name if current_file.exists(): png_file = current_file args = ['povray', '-D', f'+I{pov_file}', '+V', '-W640', '-H480', '+ua', f'+O{temp_file}'] run(args, check=True) app = QApplication() images_path = Path(__file__).parent shadow_file = images_path / 'ball-r-shadow-1.png' shadow = QPixmap(str(shadow_file)) rendered = QPixmap(str(temp_file)) cropped = rendered.copy(120, 20, 400, 400) scaled = cropped.scaled(98, 102, Qt.KeepAspectRatio, Qt.SmoothTransformation) painter = QPainter(shadow) try: painter.drawPixmap(7, 2, scaled) finally: painter.end() assert app shadow.save(str(temp_shadow_file), 'png') temp_file.unlink() temp_shadow_file.rename(png_file) print(f'Generated {png_file} from {pov_file}.')