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.1.tar.gz (5.5 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.1-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pillowstrap-1.0.1.tar.gz
  • Upload date:
  • Size: 5.5 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.1.tar.gz
Algorithm Hash digest
SHA256 98f2ce3f55702a4467de6c63e9d8a7d6ffeac93cd635f87777bbdc12a8fc4d11
MD5 37b996b9f0f79f2002376603291d14be
BLAKE2b-256 580574b24e088da1e2480d5020869f13ae776b0f98d4ee32b1f65c281177edc0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pillowstrap-1.0.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b87f68f45b46076a2cb06e9266aea7240ccc4f199010efba542cd29217ee508d
MD5 2c88bf055507b8252d7d5b82c0f9945b
BLAKE2b-256 29e35f41c916132209538c36cdb2c11fd28d82126b98275b882809861c3d3b73

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