Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

turbojpeg_rpi-0.0.3-cp311-cp311-manylinux_2_34_aarch64.whl (550.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64

File details

Details for the file turbojpeg_rpi-0.0.3-cp311-cp311-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for turbojpeg_rpi-0.0.3-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 b691a5876f05d59bf51fa9f0f300f624338b4b2297a951b31ffb0ddbe14f27b5
MD5 1642608e2e112ba79ee9e0b1a625f7f8
BLAKE2b-256 ba70aea165178c5ba021fcb28faa80c1ebb93c19120b533d72ff87483c08a3b5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page