Example #1
0
 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))
Example #2
0
 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()
Example #3
0
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}.')