The Toilmore API SDK provides Python APIs to optimize and process images.
Project description
Toilmore Python API
Installing
pip install toilmore-sdk
How to use
Simplifies using the toilmore API by wrapping the request state machine. To optimize an image, all you need is a valid API token, and domain. See here how to get them.
Using the light API
import os
import asyncio
from toilmoresdk import (
LIGHT_API,
Toilmore,
)
from toilmoresdk.submit_machine import (
OptimizationResponseStatus,
RejectionNoticeToHumanEnum,
)
from toilmoresdk.stream_helpers import store_file_content
from toilmoresdk.api_config import ApiConfig
from toilmoresdk.constants import PrecursorEnum
from toilmoresdk import constants
config = ApiConfig(
# LIGHT_API contains our light api endpoint.
api_endpoint=LIGHT_API,
# Use a valid API token below:
api_token='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
# Use a valid domain below, as received when
# you created the token.
domain='YYYYYYYYYYYYYYYYYYYYYYYYYY'
)
toilmore = Toilmore(config)
loop = asyncio.get_event_loop()
image_path = "./my_image.jpg"
precursor = PrecursorEnum.WEBP0
r = loop.run_until_complete(
toilmore.optimize(image_path, precursor)
)
if r.status == OptimizationResponseStatus.FAILURE:
rejection_notice = r.rejection_notice
rejection_notice_enum = rejection_notice.rejection_notice
human_readable = RejectionNoticeToHumanEnum[
rejection_notice_enum.name
].value
print(
f'Failure: {human_readable} '
f'rejection_notice: { rejection_notice.rejection_notice}, '
f'inner_error: {rejection_notice.inner_error}'
)
elif r.status == OptimizationResponseStatus.SUCCESS:
base_filename, file_extension = os.path.splitext(image_path)
output_filename = '{}{}'.format(
base_filename,
constants.PrecursorToExtensionEnum[precursor.name].value
)
output_dir = os.path.join(
os.path.abspath(os.path.dirname(image_path)),
output_filename
)
loop.run_until_complete(
store_file_content(
r.response_stream,
output_dir
)
)
print('Optimized image stored at: ', output_dir)
Using the Lux API
import os
import asyncio
from toilmoresdk import (
LUX_API,
Toilmore,
)
from toilmoresdk.submit_machine import (
OptimizationResponseStatus,
RejectionNoticeToHumanEnum,
)
from toilmoresdk.stream_helpers import store_file_content
from toilmoresdk.api_config import ApiConfig
from toilmoresdk.constants import PrecursorEnum
from toilmoresdk import constants
config = ApiConfig(
# LIGHT_API contains our light api endpoint.
api_endpoint=LUX_API,
# Use a valid API token below:
api_token='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
# Use a valid domain below, as received when
# you created the token.
domain='YYYYYYYYYYYYYYYYYYYYYYYYYY'
)
toilmore = Toilmore(config)
loop = asyncio.get_event_loop()
image_path = "./my_image.jpg"
precursor = PrecursorEnum.WEBP0
adjustments = {
"shifter": {
"steps": [
{
"scale-to": {
"width": 90
}
}
]
},
"encoder": {
"quality-measure": "fsim-c",
"qual-threshold": 0.90
}
}
r = loop.run_until_complete(
toilmore.optimize(image_path, precursor, adjustments)
)
if r.status == OptimizationResponseStatus.FAILURE:
rejection_notice = r.rejection_notice
rejection_notice_enum = rejection_notice.rejection_notice
human_readable = RejectionNoticeToHumanEnum[
rejection_notice_enum.name
].value
print(
f'Failure: {human_readable} '
f'rejection_notice: { rejection_notice.rejection_notice}, '
f'inner_error: {rejection_notice.inner_error}'
)
elif r.status == OptimizationResponseStatus.SUCCESS:
base_filename, file_extension = os.path.splitext(image_path)
output_filename = '{}{}'.format(
base_filename,
constants.PrecursorToExtensionEnum[precursor.name].value
)
output_dir = os.path.join(
os.path.abspath(os.path.dirname(image_path)),
output_filename
)
loop.run_until_complete(
store_file_content(
r.response_stream,
output_dir
)
)
print('Optimized image stored at: ', output_dir)
To know more about the lux's adjustments, please take a look to the following doc:
- https://demo.pixellena.com/adjustments/
- https://pixellena.com/docs/quality-measures/
- https://pixellena.com/docs/enhance/
- https://pixellena.com/docs/master/
- https://pixellena.com/docs/encoder/
Both the light and the lux API are supported as you could see above.
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 toilmore-sdk-0.2.7.tar.gz.
File metadata
- Download URL: toilmore-sdk-0.2.7.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.4.2 requests/2.26.0 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
180c730a3545da7853746872717211af49fb8698cf2551961436e21a4f8aac0a
|
|
| MD5 |
a367818f97e4b86c000b8ec9d1cb22c8
|
|
| BLAKE2b-256 |
65043c9a823c1d294755303119425ec16f75ede3894e3057a9db7c5d8aaf1c2b
|
File details
Details for the file toilmore_sdk-0.2.7-py3-none-any.whl.
File metadata
- Download URL: toilmore_sdk-0.2.7-py3-none-any.whl
- Upload date:
- Size: 26.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.4.2 requests/2.26.0 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4734913dfaa6f3a54eeb9ec2870a7a2bafc16fb0cedda361b3ff48bf66a88a9
|
|
| MD5 |
47a8c9c09c7acda08ee2a1e1a16b20c0
|
|
| BLAKE2b-256 |
d9d050136fee3b9d1ff95359fb52943bb03bce3f65e8e2a9c39288b38a2bd051
|