1
0
mirror of https://github.com/vladmandic/sdnext.git synced 2026-01-27 15:02:48 +03:00
Files
sdnext/scripts/postprocessing_pixelart.py
Vladimir Mandic 36c356785e modernui updates
Signed-off-by: Vladimir Mandic <mandic00@live.com>
2025-07-22 10:07:17 -04:00

42 lines
2.6 KiB
Python

import gradio as gr
from modules import scripts_postprocessing, devices
class ScriptPixelArt(scripts_postprocessing.ScriptPostprocessing):
name = "PixelArt"
order = 30000
def ui(self):
with gr.Accordion('PixelArt', open = False, elem_id="postprocess_pixelart_accordion"):
with gr.Row():
pixelart_enabled = gr.Checkbox(label="Enable PixelArt", value=False, elem_id="extras_pixelart_enabled")
pixelart_use_edge_detection = gr.Checkbox(label="Enable edge detection", value=True, elem_id="extras_pixelart_use_edge_detection")
with gr.Row():
pixelart_block_size = gr.Slider(minimum=2, maximum=64, step=1, value=8, label="PixelArt block size", elem_id="extras_pixelart_block_size")
pixelart_edge_block_size = gr.Slider(minimum=2, maximum=64, step=1, value=4, label="Edge block size", elem_id="extras_pixelart_edge_block_size")
pixelart_image_weight = gr.Slider(minimum=0.0, maximum=2.0, step=0.01, value=1.0, label="Edge image weight", elem_id="extras_pixelart_image_weight")
pixelart_sharpen_amount = gr.Slider(minimum=0.0, maximum=1.0, step=0.01, value=0.1, label="PixelArt sharpen", elem_id="extras_pixelart_sharpen_amount")
return {
"pixelart_enabled": pixelart_enabled,
"pixelart_block_size": pixelart_block_size,
"pixelart_edge_block_size": pixelart_edge_block_size,
"pixelart_use_edge_detection": pixelart_use_edge_detection,
"pixelart_image_weight": pixelart_image_weight,
"pixelart_sharpen_amount": pixelart_sharpen_amount,
}
def process(self, pp: scripts_postprocessing.PostprocessedImage, pixelart_enabled: bool, pixelart_use_edge_detection: bool, pixelart_block_size: int, pixelart_edge_block_size: int, pixelart_image_weight: float, pixelart_sharpen_amount: float): # pylint: disable=arguments-differ
if not pixelart_enabled:
return
from modules.postprocess.pixelart import img_to_pixelart, edge_detect_for_pixelart
pixel_image = pp.image
if pixelart_use_edge_detection:
pixel_image = edge_detect_for_pixelart(pixel_image, image_weight=pixelart_image_weight, block_size=pixelart_edge_block_size, device=devices.device)
pp.info["PixelArt edge block size"] = pixelart_edge_block_size
pixel_image = img_to_pixelart(pixel_image, sharpen=pixelart_sharpen_amount, block_size=pixelart_block_size, device=devices.device)
if len(pixel_image) == 1:
pixel_image = pixel_image[0]
pp.image = pixel_image
pp.info["PixelArt block size"] = pixelart_block_size