Classes and methods to handle pictures for the web
Project description
Gallerist
Classes and methods to handle pictures for the web, using Pillow.
$ pip install gallerist
Features
- Code api to handle the generation of pictures in various sizes (e.g. medium size picture, small size, thumbnail)
- Both asynchronous api and synchronous api
- Supports user defined stores for binaries, for example to read and write files in Azure Blob Storage, or AWS S3
- Handles by default JPG, PNG, GIF, MPO; and provides a code api to support adding more supported formats
- Supports scaling animated GIF files (resized gifs are still animated)
- Maintains PNG transparencies
See also
Examples
Basic example using the synchronous api, and reading files from file system:
from gallerist import Gallerist
from gallerist.fs import FileSystemSyncFileStore
gallerist = Gallerist(FileSystemSyncFileStore('tests'))
metadata = gallerist.process_image('files/blacksheep.png')
Configuring sizes
from gallerist import Gallerist, ImageSize
from gallerist.fs import FileSystemSyncFileStore
store = FileSystemSyncFileStore("tests")
# configuring sizes by mime (use '*' to match any other mime):
gallerist = Gallerist(
store,
sizes={
"image/jpeg": [ImageSize("a", 500), ImageSize("b", 400), ImageSize("c", 300)],
"image/png": [ImageSize("a", 350), ImageSize("b", 250), ImageSize("c", 150)],
},
)
metadata = gallerist.process_image("files/pexels-photo-126407.jpeg")
print(metadata)
The original picture is not modified, it is only read to produce more images in other sizes.
Metadata:
<ImageMetadata width=2520 height=1418 extension=".jpg" mime="image/jpeg" versions=[
<ImageVersion
size_name="a"
id="bbf665ba8dd3412a84ac435a086fc7ad"
max_side=500
file_name="a-bbf665ba8dd3412a84ac435a086fc7ad.jpg"
>,
<ImageVersion
size_name="b"
id="7e4b38b977964c2a91544c1e0621c3a1"
max_side=400
file_name="b-7e4b38b977964c2a91544c1e0621c3a1.jpg"
>,
<ImageVersion
size_name="c"
id="847cad2796004b5086269bec9d705cdc"
max_side=300
file_name="c-847cad2796004b5086269bec9d705cdc.jpg"
>
]>
Implementing a custom file store
Custom stores must implement one of the following protocols:
from gallerist.abc import FileStore, SyncFileStore
class MyAsyncFileStore(FileStore):
"""Implement your async file store, then use gallerist.process_image_async method"""
async def read_file(self, file_path: str) -> bytes:
pass
async def write_file(self, file_path: str, data: bytes):
pass
async def delete_file(self, file_path: str):
pass
class MySyncFileStore(SyncFileStore):
"""Implement your sync file store, then use gallerist.process_image method"""
def read_file(self, file_path: str) -> bytes:
pass
def write_file(self, file_path: str, data: bytes):
pass
def delete_file(self, file_path: str):
pass
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 gallerist-0.0.6.tar.gz.
File metadata
- Download URL: gallerist-0.0.6.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.0 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71a214ac8f39e9f87b0fd098804f2428afd0e4d156da8131ffaadde063d1df61
|
|
| MD5 |
57db4365c61f8d51a11d963f72d5d883
|
|
| BLAKE2b-256 |
7aa08fbe19e15defeb7362b8c5c5078d9eb146de0d8283b3d3f892c6363548fa
|
File details
Details for the file gallerist-0.0.6-py3-none-any.whl.
File metadata
- Download URL: gallerist-0.0.6-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.0 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
437c1c268e8fadc9c5962c9df4bc9e1e8bf7356bd5f38f45223d9d24804b1911
|
|
| MD5 |
4d4b716a21247e19c63f7652b6f8ffb0
|
|
| BLAKE2b-256 |
6bc49fedf74d10457d8e8d1182cb5f334f8ba2408eb61f672c8bf99f5cd46748
|