pyguetzli icon indicating copy to clipboard operation
pyguetzli copied to clipboard

Python bindings for Google's Guetzli, a JPEG encoder that optimises JPEG compression

PyGuetzli

|Github| |Discord| |PYPI Version| |Build Status| |License|

PyGuetzli is a Python binding for Google’s Guetzli <https://github.com/google/guetzli>__ library.

Description of Guetzli from official’s repo:

Guetzli is a JPEG encoder that aims for excellent compression density at high visual quality. Guetzli-generated images are typically 20-30% smaller than images of equivalent quality generated by libjpeg. Guetzli generates only sequential (nonprogressive) JPEGs due to faster decompression speeds they offer.

Documentation

  • Installation <https://wanadev.github.io/pyguetzli/install.html>_
  • Guetzli Python Module <https://wanadev.github.io/pyguetzli/guetzli.html>_
  • Using with PIL / Pillow images <https://wanadev.github.io/pyguetzli/pil_image.html>_
  • Contributing / Reporting a bug <https://wanadev.github.io/pyguetzli/contributing.html>_

More topics at https://wanadev.github.io/pyguetzli/

Usage Example

.. code-block:: python

import pyguetzli

input_jpeg = open("./test/image.jpg", "rb").read() optimized_jpeg = pyguetzli.process_jpeg_bytes(input_jpeg)

output = open("./optimized.jpg", "wb") output.write(optimized_jpeg)

Changelog

  • [NEXT] (changes on master but not released yet):

    • Nothing yet ;)
  • v1.0.15:

    • Added Python 3.12 support (@flozz)
    • Removed Python 3.7 support (@flozz)
  • v1.0.14:

    • Guetzli: Apply a better patch to fix the crash caused by a bad access to a vector revealed when compiled with "-D_GLIBCXX_ASSERTIONS" (David Odin)
  • v1.0.13:

    • Added Python 3.11 support
  • v1.0.12:

    • Guetzli: Fixed a crash caused by a bad access to a vector revealed when compiled with "-D_GLIBCXX_ASSERTIONS" (David Odin)
  • v1.0.11:

    • arm64 and universal2 wheels for macOS
    • x86 and x68_64 wheels for musl-based Linux distro (Alpine,...)
    • win32 wheels for Windows (x86_64 were already available)
  • v1.0.10: Python 3.10 support and wheels

  • v1.0.9: Provides prebuilt wheel packages

  • v1.0.8: Updates Guetzli and python dependencies

  • v1.0.7: Fixes unicode issue when installing pyguetzli (#4)

  • v1.0.6: Fixes a typo in compilator options on unix

  • v1.0.5: Adds optimization flags when compiling Guetzli

  • v1.0.4: MS Windows support

  • v1.0.3: Updates Guetzli library

  • v1.0.2: PIL Images: fixes crash with non RGB/RGBA images (grayscale, indexed,…)

  • v1.0.1: Adds --std=c++11 flag when building Guetzli

  • v1.0.0:

    • New and simpler API
    • Built-in function to deal with PIL / Pillow Images
    • Documentation (Sphinx)
    • Guetzli update
  • v0.9.0: Initial release

.. |Github| image:: https://img.shields.io/github/stars/wanadev/pyguetzli?label=Github&logo=github :target: https://github.com/wanadev/pyguetzli .. |Discord| image:: https://img.shields.io/badge/chat-Discord-8c9eff?logo=discord&logoColor=ffffff :target: https://discord.gg/BmUkEdMuFp .. |PYPI Version| image:: https://img.shields.io/pypi/v/pyguetzli.svg :target: https://pypi.python.org/pypi/pyguetzli .. |Build Status| image:: https://github.com/wanadev/pyguetzli/actions/workflows/python-ci.yml/badge.svg :target: https://github.com/wanadev/pyguetzli/actions .. |License| image:: https://img.shields.io/pypi/l/pyguetzli.svg :target: https://github.com/wanadev/pyguetzli/blob/master/LICENSE