agentsclimarketplace

Python pillow graphics

Skill cxcscmu/SkillLearnBench/skills/b1-one-shot-claude-haiku-4-5/anthropic-poster-design/python-pillow-graphics

[COLM'26] SkillLearnBench is the first benchmark for evaluating continual learning methods that automatically generate agent skills.

Install
npx -y skills add cxcscmu/SkillLearnBench --skill python-pillow-graphics

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

Create technical graphics, diagrams, and posters using Python Pillow library with precise color control and typography.

SKILL.md

2.9 KB, as published. Nobody here has run it

Python Pillow Graphics Generation

Overview

Pillow (PIL) is the standard Python library for image manipulation and creation. It's ideal for generating technical diagrams, posters, and graphics with precise control over colors, shapes, and text.

Installation

pip install Pillow

Key Concepts

Image Creation

from PIL import Image, ImageDraw, ImageFont

# Create a new image with specific background color
width, height = 1920, 1200
background_color = (240, 240, 240)  # RGB tuple
image = Image.new('RGB', (width, height), background_color)
draw = ImageDraw.Draw(image)

Color Management

  • RGB Tuples: (R, G, B) where each value is 0-255
  • Hex to RGB Conversion:
    def hex_to_rgb(hex_color):
        hex_color = hex_color.lstrip('#')
        return tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4))
    

Drawing Shapes

# Rectangles
draw.rectangle([x1, y1, x2, y2], fill=color, outline=color, width=stroke)

# Circles/Ellipses
draw.ellipse([x1, y1, x2, y2], fill=color, outline=color)

# Lines
draw.line([(x1, y1), (x2, y2)], fill=color, width=stroke_width)

# Polygons (for 3D perspective)
draw.polygon([(x1, y1), (x2, y2), (x3, y3)], fill=color, outline=color)

Typography

# Load system fonts or TTF files
try:
    font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", size=48)
except:
    font = ImageFont.load_default()

# Draw text
draw.text((x, y), "TEXT", fill=color, font=font, anchor="lm")  # anchor: "lm"=left-middle

Best Practices

  • Use anchor parameter for precise text positioning
  • Work with RGB tuples consistently throughout
  • Set image DPI metadata for high-quality output
  • Use layers approach: background → shapes → text → details
  • Save as PNG for transparency or high-quality technical graphics

Saving Output

image.save('/path/to/image.png', quality=95, dpi=(300, 300))

Advanced Techniques

Creating 3D Perspective

Use polygons and shading to create depth:

# Front face (lighter)
draw.polygon([(x1, y1), (x2, y2), (x3, y3), (x4, y4)], fill=light_color)
# Side face (darker for depth)
draw.polygon([(x2, y2), (x3, y3), (x5, y5), (x6, y6)], fill=dark_color)

Leader Lines with Arrows

def draw_annotation_line(draw, start, end, text, color, font):
    # Line
    draw.line([start, end], fill=color, width=2)
    # Arrow head
    draw.polygon([end, (end[0]-8, end[1]-5), (end[0]-8, end[1]+5)], fill=color)
    # Text
    draw.text((end[0]+10, end[1]), text, fill=color, font=font)

Use Cases

  • Technical diagrams and exploded views
  • Engineering documentation posters
  • System architecture visualizations
  • Device component breakdowns

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.