aboutsummaryrefslogtreecommitdiff
path: root/scripts/postprocessing_create_flipped_copies.py
blob: 3425571dc3bd9758696de953bf78df430b2b598b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from PIL import ImageOps, Image

from modules import scripts_postprocessing, ui_components
import gradio as gr


class ScriptPostprocessingCreateFlippedCopies(scripts_postprocessing.ScriptPostprocessing):
    name = "Create flipped copies"
    order = 4000

    def ui(self):
        with ui_components.InputAccordion(False, label="Create flipped copies") as enable:
            with gr.Row():
                option = gr.CheckboxGroup(value=["Horizontal"], choices=["Horizontal", "Vertical", "Both"], show_label=False)

        return {
            "enable": enable,
            "option": option,
        }

    def process(self, pp: scripts_postprocessing.PostprocessedImage, enable, option):
        if not enable:
            return

        if "Horizontal" in option:
            pp.extra_images.append(ImageOps.mirror(pp.image))

        if "Vertical" in option:
            pp.extra_images.append(pp.image.transpose(Image.Transpose.FLIP_TOP_BOTTOM))

        if "Both" in option:
            pp.extra_images.append(pp.image.transpose(Image.Transpose.FLIP_TOP_BOTTOM).transpose(Image.Transpose.FLIP_LEFT_RIGHT))