Python client library for imgix.
Project description
A Python client library for generating URLs with imgix. imgix is a high-performance distributed image processing service. More information can be found at http://www.imgix.com.
Installation
$ pip install imgix
Basic Usage
To begin creating imgix URLs programmatically, simply import the imgix library and create a URL builder. The URL builder can be reused to create URLs for any images on the domains it is provided.
import imgix
builder = imgix.UrlBuilder("demos.imgix.net")
print builder.create_url("/bridge.png", {'w': 100, 'h': 100})
# Prints out:
# http://demos.imgix.net/bridge.png?h=100&w=100
For HTTPS support, simply specify the HTTPS flag like so:
import imgix
builder = imgix.UrlBuilder("demos.imgix.net", use_https=True)
print builder.create_url("/bridge.png", {'w': 100, 'h': 100})
# Prints out:
# https://demos.imgix.net/bridge.png?h=100&w=100
Signed URLs
To produce a signed URL, you must enable secure URLs on your source and then provide your signature key to the URL builder.
import imgix
builder = imgix.UrlBuilder("demos.imgix.net", sign_key="test1234")
print builder.create_url("/bridge.png", {'w': 100, 'h': 100})
# Prints out:
# http://demos.imgix.net/bridge.png?h=100&w=100&s=7370d6e36bb2262e73b19578739af1af
Srcset Generation
The imgix-python package allows for generation of custom srcset attributes, which can be invoked through create_srcset(). By default, the srcset generated will allow for responsive size switching by building a list of image-width mappings.
builder = imgix.UrlBuilder("demos.imgix.net", sign_key="my-token", include_library_param=False)
srcset = builder.create_srcset("image.png")
print srcset
Will produce the following attribute value, which can then be served to the client:
https://demos.imgix.net/image.png?w=100&s=e415797545a77a9d2842dedcfe539c9a 100w,
https://demos.imgix.net/image.png?w=116&s=b2da46f5c23ef13d5da30f0a4545f33f 116w,
https://demos.imgix.net/image.png?w=134&s=b61422dead929f893c04b8ff839bb088 134w,
...
https://demos.imgix.net/image.png?w=7400&s=ad671301ed4663c3ce6e84cb646acb96 7400w,
https://demos.imgix.net/image.png?w=8192&s=a0fed46e2bbcc70ded13dc629aee5398 8192w
In cases where enough information is provided about an image’s dimensions, create_srcset() will instead build a srcset that will allow for an image to be served at different resolutions. The parameters taken into consideration when determining if an image is fixed-width are w, h, and ar. By invoking create_srcset() with either a width or the height and aspect ratio (along with fit=crop, typically) provided, a different srcset will be generated for a fixed-size image instead.
builder = imgix.UrlBuilder("demos.imgix.net", sign_key="my-token", include_library_param=False)
srcset = builder.create_srcset("image.png", {'h':800, 'ar':'3:2', 'fit':'crop'})
print srcset
Will produce the following attribute value:
https://demos.imgix.net/image.png?ar=3%3A2&dpr=1&fit=crop&h=800&s=6cf5c443d1eb98bc3d96ea569fcef088 1x,
https://demos.imgix.net/image.png?ar=3%3A2&dpr=2&fit=crop&h=800&s=d60a61a5f34545922bd8dff4e53a0555 2x,
https://demos.imgix.net/image.png?ar=3%3A2&dpr=3&fit=crop&h=800&s=590f96aa426f8589eb7e449ebbeb66e7 3x,
https://demos.imgix.net/image.png?ar=3%3A2&dpr=4&fit=crop&h=800&s=c89c2fd3148957647e86cfc32ba20517 4x,
https://demos.imgix.net/image.png?ar=3%3A2&dpr=5&fit=crop&h=800&s=3d73af69d78d49eef0f81b4b5d718a2c 5x
For more information to better understand srcset, we highly recommend Eric Portis’ “Srcset and sizes” article which goes into depth about the subject.
Usage with UTF-8
For usage with non-ASCII characters, please be sure to that your project’s source files specify UTF-8 encoding:
# -*- coding: utf-8 -*-
If you don’t add this encoding, and you have an image with name for example ‘tiburón.jpeg’, you will get the following error trying to run your script:
SyntaxError: Non-ASCII character '***' in file test.py on line 6, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Running Tests
To run the tests and format the code, simply:
tox
Changelog
3.1.1 (2019-08-22)
fix: include dpr parameter when generating fixed-width srcset (#50)
3.1.0 (2019-08-22)
3.0.0 (2019-06-07)
2.3.0 (2019-06-06)
feat: deprecate domains in favor of domain (#45)
2.2.0 (2019-05-07)
2.1.0 (2019-02-13)
Domain validation added during UrlBuilder initialization
sign_with_library_version parameter from UrlBuilder deprecated in favor of include_library_param.
2.0.0 (2018-08-08)
UrlBuilder’s sign_mode argument removed
opts parameter from UrlBuilder.create_url deprecated in favor of params.
1.2.0 (2018-06-20)
sign_mode argument deprecated
License corrected to BSD-2-Clause.
Docstrings added to classes and methods.
1.1.2 (2016-06-30)
Proper encodeURIComponent-style URL encoding for web proxy sources. See #21 for more information.
1.1.0 (2016-02-26)
Added automatic Base64 encoding for all Base64 variant parameters.
Properly encoding all query keys and values.
1.0.0 (2016-01-15)
Change UrlBuilder#create_url to accept dict instead of kwargs. This fixes an issue with reserved words that are also imgix params potentially causing errors.
0.2.1 (2016-01-15)
Fixed a bug where any passed params that were falsy would not be passed through to imgix.
0.2.0 (2015-06-15)
Introduces defaulting to HTTPS on all requests, per the imgix-blueprint.
0.1.0 (2015-06-11)
Includes new functionality to sign every URL with an ixlib parameter for diagnostic purposes.
0.0.4 (2015-06-10)
New README note about publishing packages
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 imgix-3.1.1.tar.gz.
File metadata
- Download URL: imgix-3.1.1.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1e4d5d47f7bda8b303c52c89a582fdbe04a390ebde719136fa6f2875a921581
|
|
| MD5 |
d6cff4b11f116a12eb4a131c7f33be86
|
|
| BLAKE2b-256 |
5d46e9334da0edfffab60edaac005942c8dd7a8ede6211ac5b89ba27755087dc
|
File details
Details for the file imgix-3.1.1-py3-none-any.whl.
File metadata
- Download URL: imgix-3.1.1-py3-none-any.whl
- Upload date:
- Size: 10.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df8d277a09092fe4134d6150f53e1ba7bfebac350b93147e618ac3cc5081f3fd
|
|
| MD5 |
458c0ae0afb3f14b74ba855134cd4350
|
|
| BLAKE2b-256 |
8399fe726127ebe0090ba6fd2707e9ad9c897e340b43ab26b6944e7aeefcd365
|