Wanadev Yoga Save

Converts and optimizes images and 3D models

Project README

YOGA - Yummy Optimizer for Gorgeous Assets

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

.. figure:: https://github.com/wanadev/yoga/raw/master/logo.png :alt:

YOGA is a command-line tool and a library that can:

  • convert and optimize images from various format to JPEG, PNG and WEBP,
  • convert and optimize 3D models from various formats to glTF and GLB_.

Images are opened using Pillow_ and optimized using Guetzli_ and MozJPEG_ for JPEGs, Zopflipng_ for PNGs and libwebp_ for WEBPs.

3D Models are converted and optimized using assimp_. If models contain or reference images, they are processed by YOGA's image optimizer.

EXAMPLE: Converting and optimizing an image from CLI::

yoga  image  input.png  output.png
yoga  image  --output-format=jpeg  --jpeg-quality=84  input.png  output.jpg
yoga  image  --help

EXAMPLE: Converting and optimizing a 3D model from CLI::

yoga  model  input.fbx  output.glb
yoga  model  --no-graph-optimization  --no-meshes-optimization  --image-output-format=jpeg  --image-jpeg-quality=84  input.fbx  output.glb
yoga  model  --help

.. _glTF and GLB: https://www.khronos.org/gltf/ .. _Pillow: https://github.com/python-pillow/Pillow .. _Guetzli: https://github.com/google/guetzli .. _MozJPEG: https://github.com/mozilla/mozjpeg .. _Zopflipng: https://github.com/google/zopfli .. _libwebp: https://chromium.googlesource.com/webm/libwebp/ .. _assimp: https://github.com/assimp/assimp

Install

  • See the install section of the documentation <https://wanadev.github.io/yoga/install.html>_

Documentation

  • Command Line Interface (CLI) <https://wanadev.github.io/yoga/cli/index.html>_
  • Python API <https://wanadev.github.io/yoga/python/index.html>_
  • Contributing <https://wanadev.github.io/yoga/contributing.html>_

Changelog

  • [NEXT] (changes on master that have not been released yet):

    • Nothing yet ;)
  • v1.3.1-1:

    • This version has no code change from the v1.3.1. It is only an update of the distribution :

      • A brand new standalone version was build for Linux
      • The Windows standalone distribution was updated (changes in documentation)
    • dist: Added scripts to build a standalone binary version of YOGA on Linux

  • v1.3.1:

    • chore(sdist): Fixed included files in sdist package (@flozz)
  • v1.3.0:

    • feat(assimp): Updated assimp to v5.3.1 (fixed build on GCC >= 13) (@flozz)
    • chore: Removed a script that is no more needed (@flozz)
    • docs: Updated contributing documentation (libraries, supported Python version, assimp update) (@flozz)
  • v1.2.3:

    • Code quality: more robust type comparison (@flozz)
    • Code quality: cleanup some Python 2.7 specific code (@flozz)
    • Added Python 3.12 support (@flozz)
    • Removed Python 3.7 support (@flozz)
  • v1.2.2:

    • Updated the code to not use deprecated constants on newer Pillow versions
    • Various typo fixed (@kianmeng, #45)
    • Added Python 3.11 support
  • v1.2.1:

    • No change: fix an upload error on PYPI
  • v1.2.0:

    • Add color quantization options (based on libimagequant)
    • arm64 and universal2 wheels for macOS
    • x86 and x68_64 wheels for musl-based Linux distro (Alpine,...)
    • MAINTAINERS: New dependency: imagequant <https://github.com/wanadev/imagequant-python>_
  • v1.1.2:

    • Add flag to CFFI builder to fix MacOS build
  • v1.1.1 (not published):

    • JPEG: ignore invalid values for the orientation tag (#38)
    • Python 3.10 support and wheels
  • v1.1.0:

    • JPEG Optimization:

      • Honor the JPEG orientation EXIF tag
      • JPEG optimization has been improved by using some optimizations from MozJPEG after the Guetzli encoding (from 2.4 % to 7.3 % of additional size reduction)
    • PNG Optimization:

      • YOGA can no more output a PNG larger than the input one when performing a PNG to PNG optimization
    • CLI:

      • Allow to cancel an optimization using Ctrl+C (NOTE: may not work on Windows)
      • Add a --version option to get YOGA's version
      • Improve yoga --help usage
    • Python versions:

      • Python 2.7 support dropped
    • NOTE for packagers:

      • new dependency to mozjpeg-lossless-optimization <https://github.com/wanadev/mozjpeg-lossless-optimization>_
  • v1.0.0:

    • WEBP (lossy and lossless) images supported as output format
    • PNG default optimization preset changed to a 10× faster preset (old preset still available with --png-slow-optimization flag)
    • New model flag --no-fix-infacing-normals to disable Assimp's "fix infacing normals" postprocess (#32, #33)
    • Show CLI usage when no parameter given
    • Developer documentation improved (#31)
    • ASSIMP library updated
    • WARNING: This is the last version to actively support Python 2.7!
  • v0.11.1:

    • Automated workflow for deploying the PyPI packages
    • Wheel are now distributed on PyPI
  • v0.11.0:

    • Allows to build YOGA on Windows
    • Scripts and workflow to build Windows standalone versions
  • v0.10.2:

    • Updates assimp and python libraries
  • v0.10.1:

    • Fixes an issue that occurs when output file does not already exist
  • v0.10.0:

    • Prevent overwriting of the output file when an error occurs (#17)
    • Unicode path support (#16)
  • v0.10.0b1:

    • Verbose and quiet modes,
    • Allows to pass textures from memory instead of looking on the filesystem,
    • Allows to pass a fallback texture instead of raising an error.
  • v0.9.1b1:

    • Automatic selection of the output format (png or jpeg),
    • Prevent duplication of textures that are shared between materials,
    • Fixes Windows paths of textures.
  • v0.9.0b1: First release (only GLB output for models, no image auto output format)

.. |Github| image:: https://img.shields.io/github/stars/wanadev/yoga?label=Github&logo=github :target: https://github.com/wanadev/yoga .. |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/yoga.svg :target: https://pypi.python.org/pypi/yoga .. |Build Status| image:: https://github.com/wanadev/yoga/workflows/Python%20CI/badge.svg :target: https://github.com/wanadev/yoga/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/yoga.svg :target: https://github.com/wanadev/yoga/blob/master/LICENSE

Open Source Agenda is not affiliated with "Wanadev Yoga" Project. README Source: wanadev/yoga
Stars
96
Open Issues
12
Last Commit
2 weeks ago
Repository

Open Source Agenda Badge

Open Source Agenda Rating