QR Builder
A production-ready Python package for generating QR codes with multiple artistic styles. Perfect for marketing materials, product packaging, event flyers, and website integration.
Features
-
5 QR Code Styles:
- Basic - Simple QR codes with custom colors
- With Logo - Logo/image embedded in QR center
- With Text - Text/words displayed in QR center
- Artistic - Image transforms INTO the QR code pattern (colorful)
- QArt - Halftone/dithered artistic style
-
Multiple Interfaces:
- REST API via FastAPI with OpenAPI documentation
- CLI for command-line usage
- Web interface with visual builder
- WordPress-embeddable widget
- Python library for programmatic use
-
Production Ready:
- Docker support
- CORS enabled for web integration
- Batch processing for multiple images
- Quality presets for artistic QR codes
Quick Start
Installation
# From source
git clone https://github.com/aiqso/qr-builder.git
cd qr-builder
pip install -e ".[dev]" # Include dev dependencies for testing
CLI Usage
# Generate a basic QR code
qr-builder qr "https://example.com" qr.png --size 600
# QR with logo in center
qr-builder logo "https://example.com" logo.png output.png --scale 0.25
# QR with text in center
qr-builder text "https://example.com" "HELLO" output.png --font-color "#e07030"
# Artistic QR (image becomes the QR pattern)
qr-builder artistic "https://example.com" image.png output.png --preset large
# QArt halftone style
qr-builder qart "https://example.com" image.png output.png --version 10
# Embed QR into background image
qr-builder embed background.jpg "https://example.com" output.png \
--scale 0.3 --position bottom-right
# Batch embed into all images in a directory
qr-builder batch-embed ./images "https://example.com" ./output --glob "*.jpg"
Python Library
from qr_builder import (
generate_qr_only,
generate_qr_with_logo,
generate_qr_with_text,
generate_artistic_qr,
generate_qart,
generate_qr_unified,
QRConfig,
QRStyle,
ARTISTIC_PRESETS,
)
# Basic QR code
generate_qr_only("https://example.com", "qr.png", size=500)
# QR with logo
generate_qr_with_logo(
"https://example.com",
"logo.png",
"output.png",
logo_scale=0.25,
)
# QR with text
generate_qr_with_text(
"https://example.com",
"HELLO",
"output.png",
font_color="#e07030",
)
# Artistic QR with preset
generate_artistic_qr(
"https://example.com",
"image.png",
"output.png",
preset="large",
colorized=True,
)
# Unified interface with configuration
config = QRConfig(
style=QRStyle.ARTISTIC,
data="https://example.com",
output_path="output.png",
source_image="image.png",
preset="hd",
colorized=True,
)
generate_qr_unified(config)
Web Interface
Start the visual web interface:
python server.py
# Visit http://localhost:8080
Features:
- Tab-based interface for all 5 QR styles
- Live preview
- Color pickers
- Preset selection for artistic QR codes
- Download generated QR codes
REST API
Start the API server:
# Using uvicorn
uvicorn qr_builder.api:app --reload --port 8000
# Visit http://localhost:8000/docs for interactive API docs
Endpoints:
| Method | Endpoint | Description |
|---|---|---|
| GET | /health |
Health check |
| GET | /styles |
List available styles and presets |
| POST | /qr |
Generate basic QR code |
| POST | /qr/text |
QR with text in center |
| POST | /qr/logo |
QR with logo in center |
| POST | /qr/artistic |
Artistic QR (image becomes QR) |
| POST | /qr/qart |
Halftone/dithered QR |
| POST | /embed |
Embed QR into background image |
| POST | /batch/embed |
Batch embed (returns ZIP) |
| POST | /batch/artistic |
Batch artistic QR (returns ZIP) |
See docs/API.md for complete API documentation.
WordPress Integration
Embed the QR Builder in any WordPress site:
- Copy
wordpress/qr-builder-widget.html - Add to WordPress via Custom HTML block
- Update
QR_API_URLto your server address
See wordpress/README.md for detailed instructions.
Artistic Presets
For artistic QR codes, use presets for optimal quality:
| Preset | Version | Best For |
|---|---|---|
small |
5 | Web thumbnails, social media |
medium |
10 | General use, business cards |
large |
15 | Print, marketing materials |
hd |
20 | Large format, high detail |
Docker Deployment
# Build and run
docker build -t qr-builder .
docker run -p 8080:8080 qr-builder python server.py
# Or with Docker Compose
docker compose up --build
Environment variables:
| Variable | Default | Description |
|---|---|---|
QR_SERVER_HOST |
0.0.0.0 |
Server host binding |
QR_SERVER_PORT |
8080 |
Server port |
Project Structure
qr-builder/
├── qr_builder/
│ ├── __init__.py # Package exports
│ ├── core.py # Core QR generation (5 styles)
│ ├── cli.py # Command-line interface
│ └── api.py # FastAPI REST API
├── server.py # Web interface server
├── wordpress/
│ ├── qr-builder-widget.html # WordPress embed widget
│ └── README.md # WordPress integration guide
├── docs/
│ └── API.md # API documentation
├── tests/
│ ├── test_core.py # Core function tests
│ └── test_api.py # API endpoint tests
├── .github/
│ └── workflows/
│ └── ci.yml # GitHub Actions CI
├── pyproject.toml # Package configuration
├── Dockerfile # Docker image
├── docker-compose.yml # Docker Compose config
└── README.md
Use Cases
- Marketing materials - Branded QR codes with company images
- Product packaging - Artistic QR codes that match design
- Event tickets - Visually appealing check-in codes
- Business cards - QR codes with logos or text
- Restaurant menus - Stylish codes for online ordering
- Social media - Eye-catching QR codes for profiles
- Website widgets - Generate QR codes dynamically via API
- WordPress sites - Embeddable QR generator for visitors
Requirements
- Python 3.9+
- Dependencies: qrcode, Pillow, amzqr, pyqart, segno, fastapi, uvicorn
License
MIT License - see LICENSE for details.
Contributing
Contributions are welcome! Please open an issue or submit a pull request.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Support
- GitHub Issues: https://github.com/Your Organization/qr-builder/issues
- Documentation: https://github.com/Your Organization/qr-builder
Metadata
Release files for qr-builder 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qr_builder-0.3.2.tar.gz | 35.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qr_builder-0.3.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 65.9 kB
Release files / qr_builder-0.3.2.tar.gz
| Download URL | qr_builder-0.3.2.tar.gz |
|---|---|
| Size | 35.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
40996685e1174f65b9da543d8b01d906fdeb822e35d737340a1f6f96b3b71ce0
|
|
BLAKE2b-256 checksum How to use checksums |
fea56ee7261a7d867f0544d45275d02fa341c0e831643eb967ab4cec1fbac8ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 14, 2026.
Transparency logRelease files / qr_builder-0.3.2-py3-none-any.whl
| Download URL | qr_builder-0.3.2-py3-none-any.whl |
|---|---|
| Size | 30.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
704e9c06fbc042a4556fcb268333e07e36ed4c1c88ffb0a0d7ca50f1ac13abb5
|
|
BLAKE2b-256 checksum How to use checksums |
7c78777283050e44542503a1d866998bdc5af4037f6ad7590f87b49f2f9e45cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 14, 2026.
Transparency log