Skip to main content

A Bootstrap-like semantic wrapper for Python Pillow

Project description

PillowStrap 🎨

Bootstrap-like semantics for Python Image Generation.

PillowStrap is a wrapper around the Python Pillow (PIL) library. It replaces imperative coordinate math (e.g., x=150, y=300) with declarative, web-like semantics (e.g., row, col-6, text-center, bg-primary).

Stop calculating pixels. Start building layouts.


🚀 Features

  • 12-Column Grid System: Just like Bootstrap, organize content into rows and columns.
  • Auto-Stacking Text: No more manual Y-coordinate tracking. Text blocks stack automatically like a Word document.
  • Smart Word Wrapping: Text automatically breaks to the next line if it exceeds the column width.
  • Image Fit Utilities: Easily place images with cover or contain logic.
  • Theming: Centralized control over colors, fonts, and spacing.

📦 Installation

  1. Directory Setup: Ensure your project looks like this:

    my_project/
    ├── pillowstrap/           <-- Source Code Folder
    │   ├── __init__.py
    │   └── theme.py
    ├── setup.py
    └── README.md
    
  2. Install: Run this command in your terminal from the root folder:

    pip install .
    

âš¡ Quick Start

Here is how to create a simple dashboard layout in seconds.

from pillowstrap import PillowStrap

# 1. Initialize Canvas (Width x Height)
app = PillowStrap(width=1200, height=800, bg="white")

# 2. Header Row (Height: 100px)
with app.row(height=100) as row:
    row.col(12, bg="primary").text("Monthly Report", color="white", size=50, align="center")

# 3. Content Row (Height: 500px)
with app.row(height=500) as row:
    
    # Left Column: Text (Spans 4 columns)
    ctx = row.col(4, bg="light")
    
    # Stacking Headers
    ctx.text("Executive Summary", size=30, weight="bold")
    ctx.text("Prepared by: Gemini", size=20, color="secondary")
    
    # Auto-Wrapping Body Text
    ctx.text(
        "PillowStrap handles long text automatically. "
        "You do not need to calculate line breaks manually. "
        "It respects the column width and padding.",
        size=24
    )

    # Right Column: Image (Spans 8 columns)
    # Places an image and crops it to fill the area
    row.col(8).img("charts.png", fit="cover")

# 4. Save
app.save("dashboard.png")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pillowstrap-1.0.0.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pillowstrap-1.0.0-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file pillowstrap-1.0.0.tar.gz.

File metadata

  • Download URL: pillowstrap-1.0.0.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for pillowstrap-1.0.0.tar.gz
Algorithm Hash digest
SHA256 30b7045ae1823ea362265b4395b28c3beb7b299bec1e886410bfb7adb25ecf6e
MD5 fc87e655c1e176a5359f6b3073eb4692
BLAKE2b-256 a36c4b34a930a7d1200216acd685876fa2009cd7d608108fa7dd3e91ed238faa

See more details on using hashes here.

File details

Details for the file pillowstrap-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pillowstrap-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for pillowstrap-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c26bbb09f5ccbea307ad3a6d5136f53dfbb00f4712de7556216d807fc5c0c63c
MD5 7c721ec0e783229e3344630e2b04b7ab
BLAKE2b-256 3ece67a699ce017261d73e7e39752a3631864ad6d687672b33107f1b8bbfbb13

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page