{"id":13456182,"url":"https://github.com/wanadev/yoga","last_synced_at":"2025-04-09T09:04:44.365Z","repository":{"id":28469529,"uuid":"113560367","full_name":"wanadev/yoga","owner":"wanadev","description":"Converts and optimizes images and 3D models","archived":false,"fork":false,"pushed_at":"2024-04-12T10:48:49.000Z","size":7983,"stargazers_count":96,"open_issues_count":12,"forks_count":13,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-04-12T17:23:41.674Z","etag":null,"topics":["assimp","glb","gltf","image","jpeg","optimizer","png","python"],"latest_commit_sha":null,"homepage":"https://wanadev.github.io/yoga/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wanadev.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-12-08T10:04:38.000Z","updated_at":"2024-04-15T10:45:35.469Z","dependencies_parsed_at":"2024-01-06T16:41:52.952Z","dependency_job_id":"1dcc1c6a-ae39-4352-b23f-4df65beb99df","html_url":"https://github.com/wanadev/yoga","commit_stats":{"total_commits":283,"total_committers":6,"mean_commits":"47.166666666666664","dds":0.2791519434628975,"last_synced_commit":"de66166f1c38bebb61725cf9e9a4b2656784c369"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wanadev%2Fyoga","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wanadev%2Fyoga/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wanadev%2Fyoga/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wanadev%2Fyoga/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wanadev","download_url":"https://codeload.github.com/wanadev/yoga/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248008631,"owners_count":21032556,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assimp","glb","gltf","image","jpeg","optimizer","png","python"],"created_at":"2024-07-31T08:01:17.392Z","updated_at":"2025-04-09T09:04:44.340Z","avatar_url":"https://github.com/wanadev.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"YOGA - Yummy Optimizer for Gorgeous Assets\n==========================================\n\n|Github| |Discord| |PYPI Version| |Build Status| |Black| |License|\n\n.. figure:: https://github.com/wanadev/yoga/raw/master/logo.png\n   :alt:\n\n**YOGA** is a command-line tool and a library that can:\n\n* convert and optimize images from various format to JPEG, PNG and WEBP,\n* convert and optimize 3D models from various formats to `glTF and GLB`_.\n\n**Images** are opened using Pillow_ and optimized using Guetzli_ and MozJPEG_\nfor JPEGs, Zopflipng_ for PNGs and libwebp_ for WEBPs.\n\n**3D Models** are converted and optimized using assimp_. If models contain or\nreference images, they are processed by YOGA's image optimizer.\n\nEXAMPLE: Converting and optimizing an image from CLI::\n\n    yoga  image  input.png  output.png\n    yoga  image  --output-format=jpeg  --jpeg-quality=84  input.png  output.jpg\n    yoga  image  --help\n\nEXAMPLE: Converting and optimizing a 3D model from CLI::\n\n    yoga  model  input.fbx  output.glb\n    yoga  model  --no-graph-optimization  --no-meshes-optimization  --image-output-format=jpeg  --image-jpeg-quality=84  input.fbx  output.glb\n    yoga  model  --help\n\n.. _glTF and GLB: https://www.khronos.org/gltf/\n.. _Pillow: https://github.com/python-pillow/Pillow\n.. _Guetzli: https://github.com/google/guetzli\n.. _MozJPEG: https://github.com/mozilla/mozjpeg\n.. _Zopflipng: https://github.com/google/zopfli\n.. _libwebp: https://chromium.googlesource.com/webm/libwebp/\n.. _assimp: https://github.com/assimp/assimp\n\n\nInstall\n-------\n\n* See `the install section of the documentation \u003chttps://wanadev.github.io/yoga/install.html\u003e`_\n\n\nDocumentation\n-------------\n\n* `Command Line Interface (CLI) \u003chttps://wanadev.github.io/yoga/cli/index.html\u003e`_\n* `Python API \u003chttps://wanadev.github.io/yoga/python/index.html\u003e`_\n* `Contributing \u003chttps://wanadev.github.io/yoga/contributing.html\u003e`_\n\n\nChangelog\n---------\n\n* **[NEXT]** (changes on ``master`` that have not been released yet):\n\n  * Nothing yet ;)\n\n* **v1.3.3-1:**\n\n  * fix(standalone): Fixed standalone builds (missing ``_cffi_backend``) (#72, @flozz)\n  * misc(standalone): Removed an old hack from Windows standalone build script (@flozz)\n  * misc(ci): Added test to ensure standalone builds are working before releasing them... (#72, @flozz)\n  * misc(deps): Updated Nuitka to v3.5.9 (@flozz)\n  * **NOTE:** This release only fixes standalone builds; the YOGA code did not change so there is no new version published on PyPI.\n\n* **v1.3.3:**\n\n  * fix(build): Added missing setuptools versions pinning that break the PyPy builds (@flozz)\n\n* **v1.3.2 / v1.3.2-1:**\n\n  * fix(build): Fixed Windows build with recent setuptools versions (@flozz)\n  * fix(release): Updated, fixed and improved standalone build scripts and CI (@flozz)\n  * misc: Added Python 3.13 support (@flozz)\n  * misc!: Removed Python 3.8 support (@flozz)\n\n* **v1.3.1-1:**\n\n  * This version has no code change from the v1.3.1. It is only an update of\n    the distribution :\n\n    * A brand new standalone version was build for Linux\n    * The Windows standalone distribution was updated (changes in documentation)\n\n  * dist: Added scripts to build a standalone binary version of YOGA on Linux\n\n* **v1.3.1:**\n\n  * chore(sdist): Fixed included files in sdist package (@flozz)\n\n* **v1.3.0:**\n\n  * feat(assimp): Updated assimp to v5.3.1 (fixed build on GCC \u003e= 13) (@flozz)\n  * chore: Removed a script that is no more needed (@flozz)\n  * docs: Updated contributing documentation (libraries, supported Python\n    version, assimp update) (@flozz)\n\n* **v1.2.3:**\n\n  * Code quality: more robust type comparison (@flozz)\n  * Code quality: cleanup some Python 2.7 specific code (@flozz)\n  * Added Python 3.12 support (@flozz)\n  * Removed Python 3.7 support (@flozz)\n\n* **v1.2.2:**\n\n  * Updated the code to not use deprecated constants on newer Pillow versions\n  * Various typo fixed (@kianmeng, #45)\n  * Added Python 3.11 support\n\n* **v1.2.1:**\n\n  * No change: fix an upload error on PYPI\n\n* **v1.2.0:**\n\n  * Add color quantization options (based on libimagequant)\n  * ``arm64`` and ``universal2`` wheels for macOS\n  * ``x86`` and ``x68_64`` wheels for musl-based Linux distro (Alpine,...)\n  * **MAINTAINERS:** New dependency: `imagequant \u003chttps://github.com/wanadev/imagequant-python\u003e`_\n\n* **v1.1.2:**\n\n  * Add flag to CFFI builder to fix MacOS build\n\n* **v1.1.1 (not published):**\n\n  * JPEG: ignore invalid values for the orientation tag (#38)\n  * Python 3.10 support and wheels\n\n* **v1.1.0:**\n\n  * **JPEG Optimization:**\n\n    * Honor the JPEG orientation EXIF tag\n    * JPEG optimization has been improved by using some optimizations from\n      MozJPEG after the Guetzli encoding (from 2.4 % to 7.3 % of additional size\n      reduction)\n\n  * **PNG Optimization:**\n\n    * YOGA can no more output a PNG larger than the input one when performing\n      a PNG to PNG optimization\n\n  * **CLI:**\n\n    * Allow to cancel an optimization using Ctrl+C (NOTE: may not work on\n      Windows)\n    * Add a ``--version`` option to get YOGA's version\n    * Improve ``yoga --help`` usage\n\n  * **Python versions:**\n\n    * Python 2.7 support dropped\n\n  * **NOTE for packagers:**\n\n    * new dependency to `mozjpeg-lossless-optimization\n      \u003chttps://github.com/wanadev/mozjpeg-lossless-optimization\u003e`_\n\n* **v1.0.0:**\n\n  * WEBP (lossy and lossless) images supported as output format\n  * PNG default optimization preset changed to a 10× faster preset (old preset\n    still available with ``--png-slow-optimization`` flag)\n  * New model flag ``--no-fix-infacing-normals`` to disable Assimp's \"fix\n    infacing normals\" postprocess (#32, #33)\n  * Show CLI usage when no parameter given\n  * Developer documentation improved (#31)\n  * ASSIMP library updated\n  * WARNING: This is the last version to actively support Python 2.7!\n\n* **v0.11.1:**\n\n  * Automated workflow for deploying the PyPI packages\n  * Wheel are now distributed on PyPI\n\n* **v0.11.0:**\n\n  * Allows to build YOGA on Windows\n  * Scripts and workflow to build Windows standalone versions\n\n* **v0.10.2:**\n\n  * Updates assimp and python libraries\n\n* **v0.10.1:**\n\n  * Fixes an issue that occurs when output file does not already exist\n\n* **v0.10.0:**\n\n  * Prevent overwriting of the output file when an error occurs (#17)\n  * Unicode path support (#16)\n\n* **v0.10.0b1:**\n\n  * Verbose and quiet modes,\n  * Allows to pass textures from memory instead of looking on the filesystem,\n  * Allows to pass a fallback texture instead of raising an error.\n\n* **v0.9.1b1:**\n\n  * Automatic selection of the output format (png or jpeg),\n  * Prevent duplication of textures that are shared between materials,\n  * Fixes Windows paths of textures.\n\n* **v0.9.0b1:** First release (only GLB output for models, no image auto\n  output format)\n\n\n.. |Github| image:: https://img.shields.io/github/stars/wanadev/yoga?label=Github\u0026logo=github\n   :target: https://github.com/wanadev/yoga\n.. |Discord| image:: https://img.shields.io/badge/chat-Discord-8c9eff?logo=discord\u0026logoColor=ffffff\n   :target: https://discord.gg/BmUkEdMuFp\n.. |PYPI Version| image:: https://img.shields.io/pypi/v/yoga.svg\n   :target: https://pypi.python.org/pypi/yoga\n.. |Build Status| image:: https://github.com/wanadev/yoga/actions/workflows/python-ci.yml/badge.svg\n   :target: https://github.com/wanadev/yoga/actions\n.. |Black| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n   :target: https://black.readthedocs.io/en/stable/\n.. |License| image:: https://img.shields.io/pypi/l/yoga.svg\n   :target: https://github.com/wanadev/yoga/blob/master/LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwanadev%2Fyoga","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwanadev%2Fyoga","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwanadev%2Fyoga/lists"}