Python bindungs for libjpeg-turbo using pybind11
Project description
turbojpeg-python
Python bindings for libjpeg-turbo using pybind11. It's using Version 3 of the TurboJPEG C API.
It implements the three functions transform
, compress
and decompress
. For more details see the function docstrings or the TurboJPEG C API docs https://rawcdn.githack.com/libjpeg-turbo/libjpeg-turbo/main/doc/html/group___turbo_j_p_e_g.html
Install
pip install turbojpeg
Example
Rotate JPEG file losslessly by 90 degrees.
import turbojpeg
with open("image.jpg", "rb") as fr:
img_data = fr.read()
# lossless rotation. fails if lossless rotation is not possible
# for example when the image dimensions are not multiples of 16
img_data_rot = turbojpeg.transform(img_data, op=turbojpeg.OP.ROT90)
with open("image-rotated.jpg", "xb") as fw:
fw.write(img_data_rot)
Save random image as JPEG with arithmetic coding.
import numpy as np
import turbojpeg
arr = np.random.randint(0, 256, (256, 256, 3), dtype=np.uint8) # random color image
quality = 90
result = turbojpeg.compress(arr, quality, turbojpeg.SAMP.Y420, arithmetic=True)
with open("arithmetic.jpg", "xb") as fw:
fw.write(result)
Build
The Python setup.py
expects the libjpeg-turbo
binaries in libjpeg-turbo-build
. You can either build it yourself or download precompiled binaries. For more details see https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md.
GitHub actions CI builds wheels for Windows 32 and 64-bit, manylinux 64-bit, musllinux 64-bit and MacOS 64-bit. 32-bit Linux builds fail due some weird NASM error. Not all wheels are tested, since some of the test dependencies are not available for all platforms.
Run tests
python -m unittest discover -s tests
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 Distributions
Built Distributions
Hashes for turbojpeg-0.0.2-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c98258b019a36ba81dad4ef40970847fd64a45553884c0b36bef58bbcd1fed5c |
|
MD5 | 42da64b7d18b031c077492afa0b122df |
|
BLAKE2b-256 | 8b049d180681e191d63dfc4d28bea7de6ac7fb3f180f5de7e719e628caceb2b7 |
Hashes for turbojpeg-0.0.2-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89c4e12a20e948e0df55a45b6550ae968bbb141e81d3240738ac2beef5011d45 |
|
MD5 | aa1cda549b97fb2562d8e4e9142f62ad |
|
BLAKE2b-256 | 6a6f9b1214ccaf85bdeac81c9ce0c638e14e9ff994ee3b9e62f558ce3d69fc26 |
Hashes for turbojpeg-0.0.2-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 252de334f13a62c95d9f0aeed5c6075b2acbfd50999013ccf1e808d6bf39588d |
|
MD5 | bf90104d1b1693dae3b9efebdaf9dc26 |
|
BLAKE2b-256 | e11500885a90a4d6b245c14ea94118fc37347f70934d6c0b8ae0b7f601fa2b8d |
Hashes for turbojpeg-0.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a28b13ad31e20392ce58133194a8ee62d49362bf7107023d47562e981a11d18a |
|
MD5 | 0d7586dac256ed97b62125760162df37 |
|
BLAKE2b-256 | cf6f3d43132e9c6e81d5459fd0f4a921c5f1480fc36ddc68a9c623bc8a9b2f7e |
Hashes for turbojpeg-0.0.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac0dd39a70fcfc4ac7d4a6266b2c211ed439b1c7b574157374f009966c6226a2 |
|
MD5 | 804151eb847f58943c525d601c896219 |
|
BLAKE2b-256 | 2c8fbcbe635d02b4cff3eeb1bace62218d93bb2582a1596b3ebaf74c662869be |
Hashes for turbojpeg-0.0.2-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c48db45428c88118ab2c2be76cd8086d9f313af0d73ede04d8203391c690131c |
|
MD5 | 846069b4f14eb96fae69124b5970f90c |
|
BLAKE2b-256 | a0061a6ca4e7eb9c8342e5991093a36dcde37033a8f8da58dcf680282bb2b733 |
Hashes for turbojpeg-0.0.2-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d38588410168db0da499f6f446084107dfe5a8b6f3b77e42f64868349306652 |
|
MD5 | 8df6ff6a4a921b11b93615816197d157 |
|
BLAKE2b-256 | 3e3136a9ed2e36961ad178eb3808becf8c454f245e2b77700fcbadd21788e117 |
Hashes for turbojpeg-0.0.2-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 040f138c63fdc7f7bf5c50c4b36f40ab496735afc42aa6cc1243a98181900878 |
|
MD5 | 5346128222352c3516d75ee384a30f81 |
|
BLAKE2b-256 | 16f9017203af594349828e9568f65d298132b3c952379fad6ce94ca7bdbcfe46 |
Hashes for turbojpeg-0.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c8c0b7a671bccf698afe4257841e98e812e56b423e41f39fbcb246530033583 |
|
MD5 | e493b31f83b94375b74f5a4ee8e96122 |
|
BLAKE2b-256 | e41c595288fd66659e162c7bd5e29b02b865f2efde6a6cd311c97b61f1f22472 |
Hashes for turbojpeg-0.0.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45066d49d3985f189f6234eab410c702413ad058b99904f7bcc87be3a8ea0146 |
|
MD5 | 5e7d650f1d13873b3fd0bc2fb4c21ba3 |
|
BLAKE2b-256 | 625129946e4f7bc214c2f99e3c9201be4411fb21bb5d39dedc28d7fa5b406669 |
Hashes for turbojpeg-0.0.2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f314a2b84ffa58296ff464952a58b80701022263e1f8037675fd8790ea6cdc6e |
|
MD5 | d3859cc750b366edb2bd36d05b5afdee |
|
BLAKE2b-256 | cdd18f70887e787b4971ae3b4af583d994694cf4b1b723053456c1846394b794 |
Hashes for turbojpeg-0.0.2-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e80336190af46ff5379ce1706c8e6f15cfeca36037100680e1b5ab83aeb05e39 |
|
MD5 | 83b0485b4ceb896dc293af40012e52d7 |
|
BLAKE2b-256 | 39b07077cd9e807817df70b308900237e8efcd1a03ab891e69d86df3dc6812e9 |
Hashes for turbojpeg-0.0.2-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b73d037a3ac2e476ffc9f11954130fd6b1beb13d3326890fbc326445e2dd748 |
|
MD5 | 14f7ffd6b0f75c5c25e730052f182e15 |
|
BLAKE2b-256 | c091c47d5ee3bac3e522aa5379027fe0c702ab976af523139c0578618919477d |
Hashes for turbojpeg-0.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 036c95fe21e7dce4bfebfa49bb6246c0950cb2c4c65b57a985e13282a5c19ec0 |
|
MD5 | fa36fc286a41dba9d97546158b788e8e |
|
BLAKE2b-256 | 4ac5baa0f06ba1c6c61ceef6e5fa30583d2b6b83c4d58753dfdcb5de818447ea |
Hashes for turbojpeg-0.0.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9cefbb4f48c8e297aad2e81419ffb7f4e4cb38030fdbab4e69a14e556166e4d0 |
|
MD5 | 34974806f989bececf604bb5cb4516b8 |
|
BLAKE2b-256 | eac329d5bf8264768a2e9194ffda6b100383ef0c6773372d3d54d49938b9a216 |
Hashes for turbojpeg-0.0.2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba62e51b170af7c87cf1cbb6bc7949e16e803170ac0f281ea9e8c6f1277ca898 |
|
MD5 | 6731ad90687e51b4a6b2ae41a736a016 |
|
BLAKE2b-256 | a181b06e930ae3c65366bdc373452d57d31a38da0f11580a77e26356d62704d0 |
Hashes for turbojpeg-0.0.2-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb5673a9858898c61760dea90f3ce57df2fbb9f138418d9f41ba79e6e32b1b31 |
|
MD5 | 66e1e80226b8709fca124eb750e677b3 |
|
BLAKE2b-256 | 4144796a4c75db0e700995d9e106caa630a484884abce95241e3a81beb43ad37 |
Hashes for turbojpeg-0.0.2-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d95ad81710c8567bd1a2cd0b02226dc1a9221adcf0e428e9f6e4d493fed9c856 |
|
MD5 | 3daf0c303ce9c93630117f5f1d81cbbd |
|
BLAKE2b-256 | 103decddfde7406a4eb731990c9da9a4708cb4b242354d8f33b9cdcac462cd0b |
Hashes for turbojpeg-0.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b126205cc88b9ac5a9eba16ecb684e42b035941929d5f8707070d8fa73f6464 |
|
MD5 | c3add33075de28550fb582317cbfde4d |
|
BLAKE2b-256 | 6647368f1eb5e08a841d13fa94a1da729b5474af770e5ad9dc98c38f77b112e3 |
Hashes for turbojpeg-0.0.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b8a08b8495f64b69188fc9d698331b0229a655df155706cc9f34999caa06612 |
|
MD5 | 5d8cf3ddaf12387ac1c6fdff64e5e5b2 |
|
BLAKE2b-256 | 8f41b07c4386ac82af9077fb66f9f3632090406e38c982929b49298635519b84 |
Hashes for turbojpeg-0.0.2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a8dcb111565763edfc3f5895d32ecffb1f97b72d300de7a159da9deb88cdf6c |
|
MD5 | e7a2f20cc540fa58a44ca47e6464b418 |
|
BLAKE2b-256 | eb4889dcc7040a89acc32ac206e63ea61e26bbfdcda144a3fd92230ddb5bb657 |
Hashes for turbojpeg-0.0.2-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | da6a1140b200ae7092d01c0b0530bed9559904f129d833733c39734c27a5de20 |
|
MD5 | 0a42ca74f15a9b74ceda7e7a37a07a81 |
|
BLAKE2b-256 | 46c39cbaddc1b0bc8a41fb3290f9c61eee77e0b616162ab3d88c023ec96f71d6 |
Hashes for turbojpeg-0.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a45c2cc9ebadee46d47dae73677aff94aff8384822ebb05408f71cece6bd0c6c |
|
MD5 | fe1c1f2b6755f2fe9a02680594488dc2 |
|
BLAKE2b-256 | 846ec39419cf635187baaa9a368b5a6795edc63547684c232cc80072556f4ccd |
Hashes for turbojpeg-0.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de28aa549a1d346fd642d8f50c63902a978318a54b584ca4ae5fef475ac03e6d |
|
MD5 | 699fb1a0af227415cfef01890185fb3c |
|
BLAKE2b-256 | 767c1e0280cdeba422a11f23e20df19d86ab144b65978e793e98682c47cc891e |
Hashes for turbojpeg-0.0.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14fa6a5e14c63d889423937a870573ec129fa249fe507b30af687381f482c201 |
|
MD5 | 6305615fb49a956ddc94f9d19186044a |
|
BLAKE2b-256 | 085ae79975c7ddbf68d5f2bea60af87132e8d4948cc54e9cce75469c482383b4 |