Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	File size: 3,211 Bytes
			
			| e538d2e fd05616 e538d2e fd05616 6681bbb fd05616 c63008c fd05616 | 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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | import spaces
import numpy as np
from pixeloe.pixelize import pixelize
from PIL import Image
import gradio as gr
@spaces.GPU
def pixelize_image(
    image,
    downscale_mode="contrast",
    target_size=128,
    patch_size=16,
    thickness=2,
    color_matching=True,
    upscale=True
):
    """
    Apply pixelization effect to an image or batch of images.
    """
    if isinstance(image, Image.Image):
        image = np.array(image)
    
    processed = pixelize(
        image,
        mode=downscale_mode,
        target_size=target_size,
        patch_size=patch_size,
        thickness=thickness,
        contrast=1.0,
        saturation=1.0,
        color_matching=color_matching,
        no_upscale=not upscale
    )
    
    return Image.fromarray(processed)
def process_image(image, downscale_mode, target_size, patch_size, thickness, color_matching, upscale):
    if image is None:
        return None
    
    result = pixelize_image(
        image,
        downscale_mode=downscale_mode,
        target_size=target_size,
        patch_size=patch_size,
        thickness=thickness,
        color_matching=color_matching,
        upscale=upscale
    )
    
    return result
def create_pixelize_tab():
    with gr.Tab("Pixelizer"):
        
        with gr.Row():
            with gr.Column():
                input_image = gr.Image(label="Input Image", type="pil", height=256)
                
                downscale_mode = gr.Dropdown(
                    choices=["contrast", "bicubic", "nearest", "center", "k-centroid"],
                    value="contrast",
                    label="Downscale Mode"
                )
                
                target_size = gr.Slider(
                    minimum=8,
                    maximum=1024,
                    value=128,
                    step=8,
                    label="Target Size"
                )
                
                patch_size = gr.Slider(
                    minimum=4,
                    maximum=32,
                    value=16,
                    step=2,
                    label="Patch Size"
                )
                
                thickness = gr.Slider(
                    minimum=1,
                    maximum=16,
                    value=2,
                    step=1,
                    label="Thickness"
                )
                
                color_matching = gr.Checkbox(
                    value=True,
                    label="Color Matching"
                )
                
                upscale = gr.Checkbox(
                    value=True,
                    label="Upscale"
                )
                
                process_btn = gr.Button("Process Image")
            
            with gr.Column():
                output_image = gr.Image(label="Processed Image")
        
        # Set up processing event
        process_btn.click(
            fn=process_image,
            inputs=[
                input_image,
                downscale_mode,
                target_size,
                patch_size,
                thickness,
                color_matching,
                upscale
            ],
            outputs=output_image
        ) |