{"id":15634639,"url":"https://github.com/flozz/yoga-image-optimizer","last_synced_at":"2025-10-06T19:01:32.086Z","repository":{"id":37965368,"uuid":"340944155","full_name":"flozz/yoga-image-optimizer","owner":"flozz","description":"A graphical tool to convert and optimize JPEG, PNG and WebP images (based on YOGA)","archived":false,"fork":false,"pushed_at":"2025-03-27T07:11:45.000Z","size":1239,"stargazers_count":147,"open_issues_count":15,"forks_count":11,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-12T14:17:08.751Z","etag":null,"topics":["guetzli","image","jpeg","mozjpeg","optimization","png","webp","zopfli","zopflipng"],"latest_commit_sha":null,"homepage":"https://yoga.flozz.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flozz.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"COPYING","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,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"flozz","custom":["https://www.paypal.me/0xflozz","https://www.buymeacoffee.com/flozz"]}},"created_at":"2021-02-21T16:12:43.000Z","updated_at":"2025-03-27T06:46:58.000Z","dependencies_parsed_at":"2023-01-31T11:31:21.400Z","dependency_job_id":"37fd8476-75f6-44fe-b3cf-56131a6f5ef8","html_url":"https://github.com/flozz/yoga-image-optimizer","commit_stats":{"total_commits":324,"total_committers":14,"mean_commits":"23.142857142857142","dds":"0.10802469135802473","last_synced_commit":"6830f5b33ad2dddc49e1bba4ee13593b2454515c"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flozz%2Fyoga-image-optimizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flozz%2Fyoga-image-optimizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flozz%2Fyoga-image-optimizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flozz%2Fyoga-image-optimizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flozz","download_url":"https://codeload.github.com/flozz/yoga-image-optimizer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254553958,"owners_count":22090417,"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":["guetzli","image","jpeg","mozjpeg","optimization","png","webp","zopfli","zopflipng"],"created_at":"2024-10-03T10:55:05.272Z","updated_at":"2025-10-06T19:01:32.016Z","avatar_url":"https://github.com/flozz.png","language":"Python","funding_links":["https://github.com/sponsors/flozz","https://www.paypal.me/0xflozz","https://www.buymeacoffee.com/flozz"],"categories":[],"sub_categories":[],"readme":"YOGA Image Optimizer\n====================\n\n|GitHub| |License| |Discord| |Github Actions| |Black|\n\n**YOGA Image Optimizer** is a graphical user interface for `YOGA Image \u003chttps://github.com/wanadev/yoga\u003e`_ that **converts and optimizes** the size of **JPEG, PNG and WebP** image files.\n\n.. figure:: ./screenshot.png\n   :alt: YOGA Image Optimizer screenshot\n\n\nRequirements\n------------\n\n* PyCairo\n* PyGObject ≥ 3.36\n* Python \u003e= 3.9\n* YOGA_ \u003e= 1.1.0\n\n.. _YOGA:  https://github.com/wanadev/yoga\n\n\nInstallation\n------------\n\nFlatpak (Linux)\n~~~~~~~~~~~~~~~\n\nA Flatpak package is available on Flathub. This is currently the simplest way to install YOGA Image Optimizer on all major Linux distributions:\n\n* https://flathub.org/apps/details/org.flozz.yoga-image-optimizer\n\n\nLinux (PyPI)\n~~~~~~~~~~~~\n\nYou must install the dependencies on your system first. It can be done via the following command on Debian and Ubuntu::\n\n    sudo apt install git build-essential python3 python3-dev python3-pip libgirepository1.0-dev libcairo2-dev pkg-config gir1.2-gtk-3.0\n\nThen install YOGA Image Optimizer with pip::\n\n    sudo pip3 install yoga-image-optimizer\n\n**NOTE:** Installing from PyPI will not install ``.desktop`` file and manual page; you will not be able to run the software from your graphical app menu (GNOME Shell etc.).\n\n\nLinux (source)\n~~~~~~~~~~~~~~\n\nYou must install the dependencies on your system first. It can be done via the following command on Debian and Ubuntu::\n\n    sudo apt install git build-essential python3 python3-dev python3-pip libgirepository1.0-dev libcairo2-dev pkg-config gir1.2-gtk-3.0\n\nThen clone this repository and navigate to it::\n\n    git clone https://github.com/flozz/yoga-image-optimizer.git\n    cd yoga-image-optimizer\n\nThen install YOGA Image Optimizer using pip::\n\n    sudo pip3 install .\n\nFinally, you can install the ``.desktop`` file, icons and manual page using the following command::\n\n    sudo ./linuxpkg/copy-data.sh /usr\n\n\nWindows\n~~~~~~~\n\nDownload either the portable .zip version or the Windows installer from the releases page:\n\n* https://github.com/flozz/yoga-image-optimizer/releases\n\n\nUsage\n-----\n\nJust type the following command to run YOGA Image Optimizer::\n\n    yoga-image-optimizer\n\nYou can also give some image files to open::\n\n    yoga-image-optimizer  image1.png  image2.jpeg\n\n\n**NOTE:** If you installed YOGA Image Optimizer from Flathub, you will have to run the following command instead::\n\n    flatpak run org.flozz.yoga-image-optimizer  image1.png  image2.jpeg\n\n\nContributing\n------------\n\nQuestions\n~~~~~~~~~\n\nIf you have any question, you can:\n\n* `Open an issue \u003chttps://github.com/flozz/yoga-image-optimizer/issues\u003e`_ on GitHub\n* `Ask on Discord \u003chttps://discord.gg/P77sWhuSs4\u003e`_ (I am not always available to chat, but I try to answer to everyone)\n\n\nBugs\n~~~~\n\nPlease `open an issue \u003chttps://github.com/flozz/yoga-image-optimizer/issues\u003e`_ on GitHub with as much information as possible if you found a bug:\n\n* Your operating system / Linux distribution (and its version)\n* How you installed the software\n* All the logs and message outputted by the software\n* etc.\n\n\nPull requests\n~~~~~~~~~~~~~\n\nPlease consider `filing a bug \u003chttps://github.com/flozz/yoga-image-optimizer/issues\u003e`_ before starting to work on a new feature; it will allow us to discuss the best way to do it. It is obviously unnecessary if you just want to fix a typo or small errors in the code.\n\nPlease note that your code must follow the coding style defined by the `pep8 \u003chttps://pep8.org\u003e`_ and pass tests. `Black \u003chttps://black.readthedocs.io/en/stable\u003e`_ and `Flake8 \u003chttps://flake8.pycqa.org/en/latest\u003e`_ are used on this project to enforce the coding style.\n\n\nTranslate YOGA Image Optimizer\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou can help translating it if the software is not available on your language.\n\nTo translate YOGA Image Optimizer, you can submit your translations creating a pull request on GitHub.\n\nDo not forget to add your name as the translation of the ``translator-credits`` key (one name per line, email is optional)::\n\n    #: yoga_image_optimizer/about_dialog.py:38\n    msgid \"translator-credits\"\n    msgstr \"\"\n    \"John DOE\\n\"\n    \"Other TRANSLATOR \u003cfoobar@example.org\u003e\\n\"\n\n\nRun the tests\n~~~~~~~~~~~~~\n\nYou must install `Nox \u003chttps://nox.thea.codes/\u003e`__ first::\n\n    pip3 install nox\n\nThen you can check for lint error::\n\n    nox --session lint\n\nor run the tests::\n\n    nox --session test\n\nYou can use following commands to run the tests only on a certain Python version (the corresponding Python interpreter must be installed on your machine)::\n\n    nox --session test-3.9\n    nox --session test-3.10\n    nox --session test-3.11\n    nox --session test-3.12\n    nox --session test-3.13\n\nYou can also fix coding style errors automatically with::\n\n    nox -s black_fix\n\n\nBuild, extract or update build translations\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou must install `Nox \u003chttps://nox.thea.codes\u003e`__ first::\n\n    pip3 install nox\n\nTo extract messages and update locales, run::\n\n    nox --session locales_update\n\nTo compile locales, run::\n\n    nox --session locales_compile\n\n**NOTE:** you must have ``msgfmt``, ``msgmerge`` and ``xgettext`` executable installed on your system to run the above commands. It can be done via the following command on Debian and Ubuntu::\n\n    sudo apt install gettext\n\n\nSupport this project\n--------------------\n\nWant to support this project?\n\n* `☕️ Buy me a coffee \u003chttps://www.buymeacoffee.com/flozz\u003e`__\n* `💵️ Give me a tip on PayPal \u003chttps://www.paypal.me/0xflozz\u003e`__\n* `❤️ Sponsor me on GitHub \u003chttps://github.com/sponsors/flozz\u003e`__\n\n\nChangelog\n---------\n\n* **[NEXT]** (changes on ``master``, but not released yet):\n\n  * misc: Added Python 3.13 support (@flozz)\n  * misc!: Removed Python 3.8 support (@flozz)\n\n* **v1.2.4:**\n\n  * i18n: Updated Occitan translation (@Mejans, #53)\n  * misc: Added Python 3.12 support (@flozz)\n  * misc!: Removed Python 3.7 support (@flozz)\n\n* **v1.2.3:**\n\n  * Fixed crash when the system locale cannot be determined (@flozz, #43)\n\n* **v1.2.2:**\n\n  * Bug fix:\n\n    * Fixed an issue that prevents the update of the view with older Pango\n      versions (@flozz, #41)\n\n  * Translations:\n\n    * Updated Italian translation (@albanobattistella, #39)\n    * Updated Spanish translation (@haggen88, #42)\n\n* **v1.2.1:**\n\n  * Fixes / improvements:\n\n    * Flatpak: use the real user cache, not the one of the Flatpak application\n      (@flozz)\n    * Added Python 3.11 support (@flozz)\n\n  * Translations:\n\n    * Added Brazilian Portuguese translation (@Kazevic, #36)\n    * Completed Dutch translation (@Vistaus, #34)\n\n* **v1.2.0:**\n\n  * Interface / user experience:\n\n    * More compact and less bloated interface (#17)\n    * Allow opening input images in the default image viewer by double-clicking\n      them\n    * Asynchronous generation and loading of thumbnails to not freeze the\n      interface when importing a lot of images (#26)\n    * Sped up thumbnail loading on Linux by using already generated thumbnails\n      from the shared cache\n    * Sped up thumbnail generation using BOX sampling instead of LANCZOS\n    * Show a warning icon if the output image is larger than the input one\n\n  * Fixes / improvements:\n\n    * Fixed a crash when generating thumbnails for JPEGs with an invalid\n      orientation EXIF tag (#29)\n    * Fixed a crash on the image import process when generating a broken\n      image's thumbnail (#27)\n    * Fixed a crash on the optimization batch if an error occurs when\n      optimizing an image (#27)\n    * Fixed inverted width and height with rotated JPEGs\n    * Fixed issues related to ``concurrent.futures`` on Python 3.7 and 3.8\n      (#32)\n    * Updated the code to not use deprecated constants on newer Pillow versions\n\n  * New translations:\n\n    * Dutch (incomplete) (@Vistaus, #25)\n    * German (Jürgen Benvenuti)\n\n* **v1.1.2:**\n\n  * New translations:\n\n    * Russian\n    * Spanish\n\n  * Updated translation:\n\n    * Turkish\n\n* **v1.1.1:**\n\n  * Fixed the abnormal amount of processes created and not cleaned when\n    starting an optimization (#13)\n\n* **v1.1.0:**\n\n  * `YOGA \u003chttps://github.com/wanadev/yoga\u003e`_ updated to v1.1.0:\n\n    * Honor the JPEG orientation EXIF tag\n    * JPEG optimization improved: up to 7.3% of additional size reduction since\n      previous version\n    * YOGA can no more output a PNG larger than the input one when performing\n      a PNG to PNG optimization\n\n  * Added a setting window:\n\n    * Number of threads used to optimize images\n    * Setting the default output locations / name or pattern of output files\n    * Theme selection / dark theme preference\n\n  * \"Optimize\" and \"Stop\" buttons behaviour improved:\n\n    * The \"Stop\" button now stops the running optimizations, not just the\n      pending ones\n    * Display a \"Canceled\" status on non-optimized image while the \"Stop\"\n      button is clicked\n    * Do not optimize again images that have already been optimized\n\n  * Allow to resize images (downscale only, preserve ratio)\n\n  * Multiselection: multiple files can now be selected and their parameters can\n    be edited all at once (multiselection)\n\n  * Windows specific changes:\n\n    * Use the Adwaita theme by default on Windows; the Windows10 GTK theme\n      looks buggy\n\n  * Fixes / improvements:\n\n    * Do not allow to remove images with the ``\u003cDel\u003e`` key while an\n      optimization is in progress\n    * Fixed image previews; no more ugly thumbnails with indexed images\n    * Image previews now honor the JPEG orientation EXIF tag\n\n  * Updated translations:\n\n    * French\n    * Italian (partial)\n    * Occitan\n    * Turkish (partial)\n\n  * **Note for packagers:**\n\n    * YOGA ≥ 1.1.0 is now needed\n    * YOGA v1.1.0 has a new dependency: `mozjpeg-lossless-optimization\n      \u003chttps://github.com/wanadev/mozjpeg-lossless-optimization\u003e`_\n\n* **v1.0.1:**\n\n  * Fixed PyPI packages\n  * **NOTE:** No new version for Windows; nothing changed\n\n* **v1.0.0:**\n\n  * Fixed ``[-]`` button not removing the chosen image\n  * Updated site URL\n\n* **v0.99.2 (beta):**\n\n  * Fixed package data not installed while installing with pip (#3)\n  * **NOTE:** No new version for Windows; nothing changed\n\n* **v0.99.1 (beta):**\n\n  * Fixed site URL in setup.py\n  * Fixed version number\n\n* **v0.99.0 (beta):**\n\n  * Initial release\n  * Linux and Windows support\n  * Optimizes JPEG, PNG and WebP image formats\n\n\n.. |GitHub| image:: https://img.shields.io/github/stars/flozz/yoga-image-optimizer?label=GitHub\u0026logo=github\n   :target: https://github.com/flozz/yoga-image-optimizer\n\n.. |License| image:: https://img.shields.io/github/license/flozz/yoga-image-optimizer\n   :target: https://github.com/flozz/yoga-image-optimizer/blob/master/COPYING\n\n.. |Discord| image:: https://img.shields.io/badge/chat-Discord-8c9eff?logo=discord\u0026logoColor=ffffff\n   :target: https://discord.gg/P77sWhuSs4\n\n.. |Github Actions| image:: https://github.com/flozz/yoga-image-optimizer/actions/workflows/python-ci.yml/badge.svg\n   :target: https://github.com/flozz/yoga-image-optimizer/actions\n\n.. |Black| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n   :target: https://black.readthedocs.io/en/stable\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflozz%2Fyoga-image-optimizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflozz%2Fyoga-image-optimizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflozz%2Fyoga-image-optimizer/lists"}