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.
- 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.
Install AlphaPIL via pip:
pip install alphapilBasic 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())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)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]
"""Need help? Join our official Discord community for support and updates! Join MeraLabs Discord
Refer to the Contribution Documentation for more information.
alphapil image-generation pillow python async discord-bot template-engine meralabs canvas dsl