Skip to main content
Glama

DevDb MCP Server

screenshot.py5.02 kB
# This script processes images in a specified input folder, applying rounded corners and shadows. # Usage: python script.py <input_folder> [output_folder] # Note that the output folder is optional. # # Example: python3 screenshot.py images from PIL import Image, ImageOps, ImageDraw, ImageFilter import os import shutil from pathlib import Path def clear_folder(folder_path): """Clear all contents of the specified folder.""" folder_path = Path(folder_path) if folder_path.exists(): shutil.rmtree(folder_path) folder_path.mkdir(parents=True) def create_rounded_rectangle(size, radius): """Create a rounded rectangle mask.""" mask = Image.new('L', size, 0) draw = ImageDraw.Draw(mask) draw.rounded_rectangle( [(0, 0), (size[0] - 1, size[1] - 1)], radius=radius, fill=255 ) return mask def create_inner_shadow(size, radius, shadow_width=3, shadow_intensity=30): """Create an inner shadow effect.""" # Create base mask with rounded corners base_mask = create_rounded_rectangle(size, radius) # Create a slightly smaller mask for the inner part smaller_size = (size[0] - shadow_width * 2, size[1] - shadow_width * 2) inner_mask = create_rounded_rectangle(smaller_size, max(radius - shadow_width, 0)) # Create the shadow image shadow = Image.new('RGBA', size, (0, 0, 0, 0)) shadow.paste(Image.new('RGBA', size, (0, 0, 0, shadow_intensity)), mask=base_mask) # Paste the inner mask to create the cutout inner_shadow = Image.new('RGBA', smaller_size, (0, 0, 0, 0)) shadow.paste(inner_shadow, (shadow_width, shadow_width), mask=inner_mask) # Apply gaussian blur shadow = shadow.filter(ImageFilter.GaussianBlur(radius=shadow_width)) return shadow def process_image(input_path, output_folder): # Handle input and output paths input_path = Path(input_path) output_path = output_folder / f"{input_path.stem}.png" # Open and convert image img = Image.open(input_path).convert('RGBA') # Create rounded corner mask radius = 15 mask = create_rounded_rectangle(img.size, radius) # Apply the mask for rounded corners output = Image.new('RGBA', img.size, (0, 0, 0, 0)) output.paste(img, mask=mask) # Create and apply inner shadow inner_shadow = create_inner_shadow(img.size, radius) output = Image.alpha_composite(output, inner_shadow) # Create outer shadow shadow_expansion = 60 shadow_size = (img.size[0] + shadow_expansion * 2, img.size[1] + shadow_expansion * 2) shadow = Image.new('RGBA', shadow_size, (0, 0, 0, 0)) shadow_draw = ImageDraw.Draw(shadow) shadow_draw.rounded_rectangle( [(shadow_expansion, shadow_expansion), (shadow_size[0] - shadow_expansion, shadow_size[1] - shadow_expansion)], radius=radius, fill=(0, 0, 0, 60) ) shadow = shadow.filter(ImageFilter.GaussianBlur(radius=25)) # Create final composition padding = 60 final_size = (img.size[0] + padding * 2, img.size[1] + padding * 2) final_image = Image.new('RGBA', final_size, (0, 0, 0, 0)) # Paste shadow with offset shadow_offset = 15 final_image.paste(shadow, (padding - shadow_expansion + shadow_offset, padding - shadow_expansion + shadow_offset), shadow) # Paste main image with inner shadow final_image.paste(output, (padding, padding), output) # Save the result final_image.save(output_path, 'PNG') return output_path def process_folder(input_folder, output_folder=None): supported_formats = {'.jpg', '.jpeg', '.png', '.bmp', '.tiff'} input_folder = Path(input_folder) if not input_folder.is_dir(): raise ValueError("The input path is not a directory") if output_folder is None: output_folder = input_folder.parent / f"{input_folder.name}-processed" else: output_folder = Path(output_folder) clear_folder(output_folder) processed_files = [] for file_path in input_folder.iterdir(): if file_path.suffix.lower() in supported_formats: try: output_path = process_image(file_path, output_folder) processed_files.append(output_path) print(f"Processed: {file_path.name} -> {output_path.name}") except Exception as e: print(f"Error processing {file_path.name}: {str(e)}") return processed_files if __name__ == "__main__": import sys if len(sys.argv) < 2 or len(sys.argv) > 3: print("Usage: python script.py <input_folder> [output_folder]") sys.exit(1) input_folder = sys.argv[1] output_folder = sys.argv[2] if len(sys.argv) == 3 else None try: processed_files = process_folder(input_folder, output_folder) print(f"\nSuccessfully processed {len(processed_files)} images") except Exception as e: print(f"Error: {str(e)}") sys.exit(1)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/damms005/devdb-vscode'

If you have feedback or need assistance with the MCP directory API, please join our Discord server