Metadata-Version: 2.1
Name: mozjpeg-lossless-optimization
Version: 1.1.3
Summary: Optimize JPEGs losslessly using MozJPEG
Home-page: https://github.com/wanadev/mozjpeg-lossless-optimization
Author: Wanadev
Author-email: contact@wanadev.fr
Maintainer: Fabien LOISON
License: BSD-3-Clause
Project-URL: Source Code, https://github.com/wanadev/mozjpeg-lossless-optimization
Project-URL: Documentation, https://github.com/wanadev/mozjpeg-lossless-optimization#usage
Project-URL: Changelog, https://github.com/wanadev/mozjpeg-lossless-optimization#changelog
Project-URL: Issues, https://github.com/wanadev/mozjpeg-lossless-optimization/issues
Project-URL: Chat, https://discord.gg/BmUkEdMuFp
Description: MozJPEG Lossless Optimization
        =============================
        
        |Github| |Discord| |PYPI Version| |Build Status| |Black| |License|
        
        This library optimizes JPEGs losslessly using MozJPEG_.
        
        To reduce the file sizes,
        
        * the Huffman table of the JPEGs is optimized,
        * the baseline JPEGs are converted to progressive JPEGs,
        * and any metadata and ICC profiles are removed.
        
        The JPEGs optimized with this library are identical to what you get using the
        ``jpegtran`` tool from MozJPEG with the ``-optimize``, ``-progressive`` and
        ``-copy none`` options.
        
        
        .. _MozJPEG: https://github.com/mozilla/mozjpeg
        
        
        Usage
        -----
        
        Optimizing (losslessly) a JPEG:
        
        .. code-block:: python
        
           import mozjpeg_lossless_optimization
        
           with open("./image.jpg", "rb") as input_jpeg_file:
               input_jpeg_bytes = input_jpeg_file.read()
        
           output_jpeg_bytes = mozjpeg_lossless_optimization.optimize(input_jpeg_bytes)
        
           with open("./out.jpg", "wb") as output_jpeg_file:
               output_jpeg_file.write(output_jpeg_bytes)
        
        Converting an image to an optimized JPEG (using `Pillow <https://pillow.readthedocs.io/>`_):
        
        .. code-block:: python
        
            from io import BytesIO
        
            from PIL import Image  # pip install pillow
            import mozjpeg_lossless_optimization
        
        
            def convert_to_optimized_jpeg(input_path, output_path):
                jpeg_io = BytesIO()
        
                with Image.open(input_path, "r") as image:
                    image.convert("RGB").save(jpeg_io, format="JPEG", quality=90)
        
                jpeg_io.seek(0)
                jpeg_bytes = jpeg_io.read()
        
                optimized_jpeg_bytes = mozjpeg_lossless_optimization.optimize(jpeg_bytes)
        
                with open(output_path, "wb") as output_file:
                    output_file.write(optimized_jpeg_bytes)
        
        
            convert_to_optimized_jpeg("input.png", "optimized.jpg")
        
        
        Install
        -------
        
        From PyPI
        ~~~~~~~~~
        
        To install MozJPEG Lossless Optimization from PyPI, just run the following
        command::
        
            pip install mozjpeg-lossless-optimization
        
        .. NOTE::
        
           We provide precompiled packages for most common platforms. You may need to
           install additional build dependencies if there is no precompiled package
           available for your platform (see below).
        
        
        From Sources
        ~~~~~~~~~~~~
        
        To install MozJPEG Lossless Optimization, MozJPEG will be compiled, so you will
        need a C compilator and cmake. On Debian / Ubuntu you can install everything
        you need with the following command::
        
            sudo apt install build-essential cmake python3 python3-dev python3-pip python3-setuptools
        
        Once everything installed, clone this repository::
        
            git clone https://github.com/wanadev/mozjpeg-lossless-optimization.git
        
        Then navigate to the project's folder::
        
            cd mozjpeg-lossless-optimization
        
        Retrieve submodules::
        
            git submodule init
            git submodule update
        
        And finally build and install using the following command::
        
            python3 setup.py install
        
        
        Hacking
        -------
        
        Get the source and build C lib and module:
        
        .. code-block:: sh
        
            # Install system dependencies
            sudo apt install build-essential cmake python3 python3-dev python3-pip python3-setuptools
        
            # Get the sources
            git clone https://github.com/wanadev/mozjpeg-lossless-optimization.git
            cd mozjpeg-lossless-optimization
            git submodule init
            git submodule update
        
            # Create and activate a Python virtualenv
            python3 -m venv __env__
            source __env__/bin/activate
        
            # Install Python dependencies in the virtualenv
            pip install cffi
        
            # Build MozJPEG
            # This will generate files in ./mozjpeg/build/ folder
            python setup.py build
        
            # Build the CFFI module "in-place"
            # This will create the ./mozjpeg_lossless_optimization/_mozjpeg_opti.*.so file on Linux
            python ./mozjpeg_lossless_optimization/mozjpeg_opti_build.py
        
        Lint::
        
            pip install nox
            nox -s lint
        
        Run tests::
        
            pip install nox
            pip -s test
        
        
        Licenses
        --------
        
        **MozJPEG Lossless Optimization** is licensed under the BSD 3 Clause license.
        See the `LICENSE
        <https://github.com/wanadev/mozjpeg-lossless-optimization/blob/master/LICENSE>`_
        file for more information.
        
        **MozJPEG** is covered by three compatible BSD-style open source licenses. See
        `its license file <https://github.com/mozilla/mozjpeg/blob/master/LICENSE.md>`_
        for more information.
        
        
        Changelog
        ---------
        
        * **[NEXT]** (changes on master but not released yet):
        
          * Nothing yet ;)
        
        * **v1.1.3:**
        
          * Added Python 3.12 support (@flozz, #6)
          * Removed Python 3.7 support (@flozz)
        
        * **v1.1.2:**
        
          * Added Python 3.11 support
        
        * **v1.1.1:**
        
          * Fix sdist package: missing MozJPEG source files added
        
        * **v1.1.0:**
        
          * Update mozjpeg to latest master commit: fd56921 (v4.1.1+)
        
        * **v1.0.2:**
        
          * ``arm64`` and ``universal2`` wheels for macOS on Apple Silicon
          * ``x86`` and ``x68_64`` wheels for musl-based Linux distro (Alpine,...)
        
        * **v1.0.1:** Python 3.10 support and wheels
        * **v1.0.0:** Handle JPEG decompression errors
        * **v0.9.0:** First public release
        
        
        .. |Github| image:: https://img.shields.io/github/stars/wanadev/mozjpeg-lossless-optimization?label=Github&logo=github
           :target: https://github.com/wanadev/mozjpeg-lossless-optimization
        .. |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/mozjpeg-lossless-optimization.svg
           :target: https://pypi.python.org/pypi/mozjpeg-lossless-optimization
        .. |Build Status| image:: https://github.com/wanadev/mozjpeg-lossless-optimization/actions/workflows/python-ci.yml/badge.svg
           :target: https://github.com/wanadev/mozjpeg-lossless-optimization/actions
        .. |Black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
           :target: https://black.readthedocs.io/en/stable/
        .. |License| image:: https://img.shields.io/pypi/l/mozjpeg-lossless-optimization.svg
           :target: https://github.com/wanadev/mozjpeg-lossless-optimization/blob/master/LICENSE
        
Keywords: image jpeg mozjpeg jpegtran optimization cffi
Platform: UNKNOWN
Provides-Extra: dev
