Generate stickers with transparent backgrounds using Gemini AI
Project description
Sticker Generator
Generate stickers with transparent backgrounds using Google's Gemini AI.
Installation
pip install sticker-generator
Setup
Set your Gemini API key as an environment variable:
export GEMINI_API_KEY="your-api-key"
Or pass it directly to the functions/CLI.
Usage
Command Line
# Basic usage
sticker-generator "a cute happy cat with big eyes"
# Specify output file
sticker-generator "a rocket ship" -o rocket.png
# Use reference images
sticker-generator "similar style illustration" -i reference1.png -i reference2.png
# Custom aspect ratio
sticker-generator "a wide banner" --aspect-ratio 16:9
# Use a style preset
sticker-generator "a happy robot" --style kawaii
sticker-generator "a space astronaut" -s 3d -o astronaut.png
# Save raw image before processing
sticker-generator "a dog" --save-raw
# Generate multiple variations as a sheet
sticker-generator "happy cat" -n 4 --sheet -o cat_sheet.png
# Generate variations as individual files
sticker-generator "cute dog" -n 6 -o dog.png
# Creates: dog_1.png, dog_2.png, ..., dog_6.png
# Sheet with custom grid (3 columns)
sticker-generator "star" -n 9 --sheet --columns 3 -o stars.png
# Sheet + individual files
sticker-generator "robot" -n 4 --sheet --save-individuals -o robots.png
# Resize output to specific dimensions
sticker-generator "cute cat" --resize 512 # 512x512 square
sticker-generator "cute cat" --resize 512x256 # Fit within 512x256, maintain aspect ratio
sticker-generator "cute cat" --resize 512x256 --resize-exact # Force exact dimensions (may distort)
# Output formats (PNG default, WebP supported)
sticker-generator "cute cat" -o cat.webp # Auto-detect from extension
sticker-generator "cute cat" -o cat.webp --lossy -q 85 # Lossy WebP with quality
sticker-generator "cute cat" -f webp-lossy -q 90 # Explicit format preset
sticker-generator "cute cat" -n 4 --sheet -o sheet.webp # Sheet in WebP format
Available Styles
| Style | Description |
|---|---|
kawaii |
Cute Japanese style with big eyes and pastel colors |
minimal |
Clean minimalist style with flat colors |
3d |
3D rendered look with depth and lighting |
pixel-art |
Retro pixel art style |
retro |
Vintage retro style with muted colors |
watercolor |
Soft watercolor painting style |
Output Formats
| Format | Description |
|---|---|
png |
Lossless PNG (default) |
webp |
Lossless WebP (smaller files) |
webp-lossy |
Lossy WebP with quality setting (smallest files) |
Format options:
-f, --format FORMAT- Explicit format preset (auto-detects from extension if omitted)-q, --quality 1-100- Quality for lossy formats (higher is better)--lossless- Force lossless compression--lossy- Force lossy compression
Python API
from sticker_generator import create_sticker, get_available_styles, get_available_formats
# Basic usage
sticker = create_sticker(
prompt="a cute happy cat with big eyes",
output="cat.png"
)
# With a style preset
sticker = create_sticker(
prompt="a happy robot",
output="robot.png",
style="kawaii"
)
# List available styles
print(get_available_styles())
# ['3d', 'kawaii', 'minimal', 'pixel-art', 'retro', 'watercolor']
# List available formats
print(get_available_formats())
# ['png', 'webp', 'webp-lossy']
# Save as WebP (auto-detected from extension)
sticker = create_sticker(
prompt="a rocket ship",
output="rocket.webp"
)
# Lossy WebP with custom quality
sticker = create_sticker(
prompt="a star",
output="star.webp",
output_format="webp-lossy",
quality=85
)
# With reference images
sticker = create_sticker(
prompt="similar style illustration",
output="custom.png",
input_images=["reference1.png", "reference2.png"]
)
# Just get the image without saving
sticker = create_sticker(
prompt="a rocket ship",
output=None # Returns PIL Image
)
# Resize output
sticker = create_sticker(
prompt="a cute cat",
output="cat_small.png",
resize=(256, 256) # Fit within 256x256, maintain aspect ratio
)
# Force exact dimensions (may distort)
sticker = create_sticker(
prompt="a cute cat",
output="cat_exact.png",
resize=(512, 256),
resize_exact=True
)
Sticker Sheets
Generate multiple variations and combine into a grid:
from sticker_generator import generate_sticker_sheet
# Generate 4 variations as a sheet
result = generate_sticker_sheet(
prompt="happy cat",
variations=4,
output="cat_sheet.png"
)
# Access individual stickers
for i, sticker in enumerate(result.stickers):
sticker.save(f"cat_{i}.png")
# Check for failures
if result.failed_indices:
print(f"Failed variations: {result.failed_indices}")
# Custom grid layout
result = generate_sticker_sheet(
prompt="star",
variations=6,
output="stars.png",
columns=3, # 3x2 grid
padding=20 # 20px between stickers
)
# Sheet in WebP format with lossy compression
result = generate_sticker_sheet(
prompt="robot",
variations=4,
output="robots.webp",
output_format="webp-lossy",
quality=90,
save_individuals=True # Individual files also saved as .webp
)
Image Processing Only
If you have your own green-screen images:
from PIL import Image
from sticker_generator import remove_green_screen_hsv, cleanup_edges, resize_image, save_transparent_image
# Load your image
img = Image.open("green_background.png")
# Remove green background
transparent = remove_green_screen_hsv(img)
# Clean up edges
clean = cleanup_edges(transparent, threshold=64)
# Optional: resize the result
resized = resize_image(clean, (256, 256)) # Fit within bounds, maintain aspect ratio
resized = resize_image(clean, (256, 256), maintain_aspect=False) # Force exact size
# Save as PNG
resized.save("transparent.png")
# Save as WebP with format options
save_transparent_image(resized, "transparent.webp") # Lossless WebP
save_transparent_image(resized, "transparent.webp", "webp-lossy") # Lossy WebP
How It Works
- Style Application: Optional style presets modify your prompt to achieve specific visual styles
- Generation: Uses Gemini AI to generate an image with a chromakey green (#00FF00) background
- Green Removal: Converts to HSV color space and removes pixels matching green hue
- Edge Cleanup: Removes semi-transparent edge artifacts for clean results
- Resize (optional): Resizes output to specified dimensions using LANCZOS resampling
License
MIT
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 sticker_generator-0.5.0.tar.gz.
File metadata
- Download URL: sticker_generator-0.5.0.tar.gz
- Upload date:
- Size: 16.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e9a6a31f14cbd14089909aef7c1ba03bc4ab9f8b1f8fb07c9259055c5a38756
|
|
| MD5 |
94e823876d7c5fe601e52463db4d2baf
|
|
| BLAKE2b-256 |
993f119636023cf7dc39ca56282417f2d0d7820b2508619dadac1cc902d7acaf
|
Provenance
The following attestation bundles were made for sticker_generator-0.5.0.tar.gz:
Publisher:
publish.yml on eyenpi/sticker-generator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sticker_generator-0.5.0.tar.gz -
Subject digest:
5e9a6a31f14cbd14089909aef7c1ba03bc4ab9f8b1f8fb07c9259055c5a38756 - Sigstore transparency entry: 870291047
- Sigstore integration time:
-
Permalink:
eyenpi/sticker-generator@59d7b1e5253cf570711e63a7967615b71820b5c4 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/eyenpi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@59d7b1e5253cf570711e63a7967615b71820b5c4 -
Trigger Event:
release
-
Statement type:
File details
Details for the file sticker_generator-0.5.0-py3-none-any.whl.
File metadata
- Download URL: sticker_generator-0.5.0-py3-none-any.whl
- Upload date:
- Size: 18.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e3a1856598de4240c2dccafd5e9b4a554279cf3e0aa7d7f305780d3eb3701715
|
|
| MD5 |
553aa71ff2a950058a0c5255fac07055
|
|
| BLAKE2b-256 |
2d2a275ef38be0115afb1b58f599113e82e4daa5061986fbac25afc3917179cf
|
Provenance
The following attestation bundles were made for sticker_generator-0.5.0-py3-none-any.whl:
Publisher:
publish.yml on eyenpi/sticker-generator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sticker_generator-0.5.0-py3-none-any.whl -
Subject digest:
e3a1856598de4240c2dccafd5e9b4a554279cf3e0aa7d7f305780d3eb3701715 - Sigstore transparency entry: 870291051
- Sigstore integration time:
-
Permalink:
eyenpi/sticker-generator@59d7b1e5253cf570711e63a7967615b71820b5c4 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/eyenpi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@59d7b1e5253cf570711e63a7967615b71820b5c4 -
Trigger Event:
release
-
Statement type: