An asynchronous, template-based image generation engine
Project description
AlphaPIL
About
AlphaPIL is an asynchronous, template-based image generation engine built on top of Pillow (PIL). It is designed to make it easy to build dynamic images using a simple, readable template language.
It is open-source and free to use, providing a powerful recursive parser for handling nested functions in image generation templates, with full support for asynchronous operations.
AlphaPIL is suitable for developers building Discord bots, automated social media graphics, or any application requiring high-performance, template-driven image creation. This package is proudly maintained by the MeraLabs organization.
Features
- 60+ Pre-built Functions: AlphaPIL comes packed with over 60 pre-built functions for shapes, text manipulation, image filtering, and masking.
- Asynchronous by Design: Built from the ground up to support
asyncio, making it perfect for modern web frameworks and Discord bots. - Powerful DSL: Use a simple
$function[arg1;arg2]syntax to define your images. Supports nested functions like$drawText[$toUpper[hello];10;10]. - Advanced Text Rendering: Support for text gradients, strokes, automatic wrapping, and auto-sizing.
- Layer & Masking System: Create complex compositions with multi-layer support and alpha masking.
- Image Caching: Built-in caching for remote images to ensure fast rendering during repeated operations.
Setup
Install AlphaPIL via pip:
pip install alphapil
Basic usage in your Python project:
import asyncio
from alphapil import CanvasEngine
async def main():
engine = CanvasEngine()
template = """
$createCanvas[800;400;#1a1a1a]
$setColor[#ffffff]
$setFont[Arial;40]
$drawText[Hello from AlphaPIL!;50;50]
$save[output.png]
"""
await engine.render_template(template)
print("Image generated successfully!")
asyncio.run(main())
Rendering with Data
You can inject dynamic data into your templates easily:
data = {
"username": "Alex",
"score": "950"
}
template = """
$createCanvas[500;200;white]
$setColor[black]
$setFont[Roboto;30]
$drawText[User: {username};20;20]
$drawText[Score: {score};20;60]
"""
image_bytes = await engine.render_template(template, data=data)
Advanced Masking
AlphaPIL supports complex masking for creating avatars or stylized images:
template = """
$createCanvas[400;400;transparent]
$createLayer[mask]
$drawCircle[200;200;180;white]
$switchLayer[main]
$drawImage[https://example.com/avatar.png;0;0;400;400]
$applyMask[mask]
"""
Support
Need help? Join our official Discord community for support and updates! Join MeraLabs Discord
Contributing
Refer to the Contribution Documentation for more information.
Keywords
alphapil image-generation pillow python async discord-bot template-engine meralabs canvas dsl
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file alphapil-0.1.0.tar.gz.
File metadata
- Download URL: alphapil-0.1.0.tar.gz
- Upload date:
- Size: 27.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef2914a21bf711970a76c095920c52c9abc2f781204831761f262ca1a275665b
|
|
| MD5 |
7c4239c3e2c4e84f9e2ce5343b9abae7
|
|
| BLAKE2b-256 |
41edf408a6a56fd1d36c4fccc771e1a40163c04ac1e92cf118d8c6a10b833301
|
File details
Details for the file alphapil-0.1.0-py3-none-any.whl.
File metadata
- Download URL: alphapil-0.1.0-py3-none-any.whl
- Upload date:
- Size: 29.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed38b450a675204cdcaaf35f99606caf0c769d9fbd13c41a65de6d3ee08d3034
|
|
| MD5 |
1de7d89167bf88ea13f8607a69293616
|
|
| BLAKE2b-256 |
6f7efcd390ccba0f89f884fdd442442627655f25eb89de24b6c2a6dbb8e1d040
|