Skip to main content

Python envelope for the popular C library libjpeg for handling JPEG files.

Project description

PyPI version Documentation Status GitHub PyPI downloads PyPi license Unittests

jpeglib

Python envelope for the popular C library libjpeg for handling JPEG files.

libjpeg offers full control over compression and decompression and exposes DCT coefficients and quantization tables.

Installation

Simply install the package with pip3

pip install jpeglib

Usage

Import the library in Python 3

import jpeglib

To install the dev version with all the libjpeg versions inside, type

pip uninstall jpeglib
pip install -U --no-cache-dir git+https://www.github.com/martinbenes1996/jpeglib.git@versions

:warning: Branch versions is dev so it is less stable and takes longer to install than the package.

DCT

Get discrete cosine transform (DCT) coefficients and quantization matrices as numpy array

im = jpeglib.JPEG("input.jpeg") # load metadata
Y,CbCr,qt = im.read_dct() # load data

You get luminance DCT, chrominance DCT and quantization tables.

Write the DCT coefficients back to a file with

im.write_dct("output.jpeg", Y, CbCr) # write data

You can also write the read-write sequence using with statement

with jpeglib.JPEG("input.jpeg") as im:
  Y,CbCr,qt = im.read_dct()
  # modify the DCT coefficients
  im.write_dct("output.jpeg", Y, CbCr)

Pixel data

Decompress the input.jpeg into spatial representation in numpy array with

im = jpeglib.JPEG("input.jpeg")
rgb = im.read_spatial()

You can specify parameters such as output color space, DCT method, dithering, etc.

Write spatial representation in numpy arrray back to file with

im.write_spatial("output.jpeg", spatial)

Here you can specify input color space, DCT method, sampling factor, output quality, smoothing factor etc.

You can find all the details in the documentation.

libjpeg version

It is possible to choose, which version of libjpeg should be used.

jpeglib.version.set('6b')

Currently jpeglib supports the most popular versions 6b and 8d. Their source codes is baked inside the package and thus distributed with it, avoiding external dependency.

Get currently used libjpeg version by

version = jpeglib.version.get()

Credits

Developed by Martin Benes.

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

jpeglib-0.10.7.tar.gz (5.7 MB view hashes)

Uploaded Source

Supported by

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