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
gallerist-0.0.5.tar.gz
(9.0 kB
view hashes)
Built Distribution
Close
Hashes for gallerist-0.0.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4537ed66bb51dfcacf73273c3d334390d538ca326df4c59f2b48df2965410b70 |
|
MD5 | f46553f3f270334565856c4c5a6257f5 |
|
BLAKE2b-256 | 96b76d5b3aa3da88e5b9a87883bca5a337debf9ca3ca73e7a6b073f0b413a2a8 |