library for instagram filters
Project description
pilgram
A python library for instagram filters.
The filter implementations are inspired by CSSgram.
Requirements
- Python >= 3.10
- Pillow or pillow-simd
- NumPy
Pillow Compatibility Notes
Important: This library requires specific Pillow versions for optimal compatibility:
- Pillow >= 10.3.0: Use latest pilgram version for full feature support including
ImageMath.lambda_eval - Pillow < 10.3.0: Use
pilgram<2.0.0which supports older Pillow versions withImageMath.eval - pillow-simd: Use
pilgram<2.0.0(pillow-simd lacksImageMath.lambda_evalsupport)
Version Selection Guide
# For Pillow >= 10.3.0
pip install pillow>=10.3.0
pip install pilgram # Latest version
# For Pillow < 10.3.0 or pillow-simd
pip install pillow<10.3.0 # or pillow-simd
pip install "pilgram<2.0.0"
Install
Recommended (Latest Pillow)
pip install pillow>=10.3.0
pip install numpy
pip install pilgram # Latest version with ImageMath.lambda_eval support
For Older Pillow Versions
pip install pillow<10.3.0 # or pillow-simd
pip install numpy
pip install "pilgram<2.0.0" # Last version supporting ImageMath.eval
Usage
Available instagram filters on pilgram:
_1977adenbrannanbrooklynclarendonearlybirdginghamhudsoninkwellkelvinlarklofimavenmayfairmoonnashvilleperpetuareyesriseslumberstinsontoastervalenciawaldenwillowxpro2
from PIL import Image
import pilgram
im = Image.open('sample.jpg')
pilgram.aden(im).save('sample-aden.jpg')
Similarly, pilgram provides css filters and blend modes as a by-product.
Available css filters on pilgram.css:
contrastgrayscalehue_rotatesaturatesepia
from PIL import Image
import pilgram.css
im = Image.open('sample.jpg')
pilgram.css.sepia(im).save('sample-sepia.jpg')
Available blend modes on pilgram.css.blending:
colorcolor_burncolor_dodgedarkendifferenceexclusionhard_lighthuelightenmultiplynormaloverlayscreensoft_light
from PIL import Image
import pilgram.css.blending
backdrop = Image.open('backdrop.jpg')
source = Image.open('source.jpg')
pilgram.css.blending.color(backdrop, source).save('blending.jpg')
Demo
Filter performance comparison with instagram-filters
Development
Setup development environment
# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone the repository
git clone https://github.com/akiomik/pilgram.git
cd pilgram
# Install dependencies (including dev dependencies)
uv sync --all-extras
# Install Pillow or pillow-simd (choose one)
uv add pillow>=9.3.0 # or uv add pillow-simd
Run commands
make check # Run all checks (lint + format-check + type-check + test)
make test # Run tests only
make lint # Run ruff linting
make format # Format code with ruff
make test-benchmark # Run performance benchmarks
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
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 pilgram-2.0.0.tar.gz.
File metadata
- Download URL: pilgram-2.0.0.tar.gz
- Upload date:
- Size: 784.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7283aeb37256a77f2bdb749494a1571283d2ffbe90e6355c073bae810d72498a
|
|
| MD5 |
5d8d8627fe2b56f2348095fe12396a3a
|
|
| BLAKE2b-256 |
76e061d545caa788bc8ccce625e37dfe9f479a779dcb42f22e93cfef2c2758b1
|
Provenance
The following attestation bundles were made for pilgram-2.0.0.tar.gz:
Publisher:
publish.yml on akiomik/pilgram
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pilgram-2.0.0.tar.gz -
Subject digest:
7283aeb37256a77f2bdb749494a1571283d2ffbe90e6355c073bae810d72498a - Sigstore transparency entry: 718268404
- Sigstore integration time:
-
Permalink:
akiomik/pilgram@3037fb5bff7733c8cdb8f140ca930e96f72b15e6 -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/akiomik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3037fb5bff7733c8cdb8f140ca930e96f72b15e6 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pilgram-2.0.0-py3-none-any.whl.
File metadata
- Download URL: pilgram-2.0.0-py3-none-any.whl
- Upload date:
- Size: 80.6 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 |
c483989ea7f2579903198b969411ad89bfb884cf56304115acfe4e2ec8fcf2bc
|
|
| MD5 |
d78f7a699bea48beb9bc9f8babe6fb13
|
|
| BLAKE2b-256 |
feed4db183664b54254a0d4fa62005469a197cfd8afa72aaa7830e5d8bc82ba7
|
Provenance
The following attestation bundles were made for pilgram-2.0.0-py3-none-any.whl:
Publisher:
publish.yml on akiomik/pilgram
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pilgram-2.0.0-py3-none-any.whl -
Subject digest:
c483989ea7f2579903198b969411ad89bfb884cf56304115acfe4e2ec8fcf2bc - Sigstore transparency entry: 718268412
- Sigstore integration time:
-
Permalink:
akiomik/pilgram@3037fb5bff7733c8cdb8f140ca930e96f72b15e6 -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/akiomik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3037fb5bff7733c8cdb8f140ca930e96f72b15e6 -
Trigger Event:
release
-
Statement type: