{ "info": { "author": "Victor Domingos", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: iOS", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: OS Independent", "Operating System :: POSIX :: Linux", "Operating System :: Unix", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: Multimedia :: Graphics", "Topic :: Multimedia :: Graphics :: Graphics Conversion", "Topic :: Utilities" ], "description": "# Optimize Images [![Github commits (since latest release)](https://img.shields.io/github/commits-since/victordomingos/optimize-images/latest.svg)](https://github.com/victordomingos/optimize-images) ![PyPI](https://img.shields.io/pypi/v/optimize-images) ![PyPI - Downloads](https://img.shields.io/pypi/dm/optimize-images)\nA command-line interface (CLI) utility written in pure Python to help you \nreduce the file size of images.\n\nThis application is intended to be pure Python, with no special dependencies\nbesides Pillow, therefore ensuring compatibility with a wide range of systems,\nincluding iPhones and iPads running Pythonista 3. If you don't have the need\nfor such a strict dependency management, you will probably be better served\nby any several other image optimization utilities that are based on some well\nknown external binaries.\n\n![optimize-images_screenshot](https://user-images.githubusercontent.com/18650184/42172232-5788c43a-7e13-11e8-8094-5811e7fd55c1.png)\n\n\n## Documentation\n * [English](https://github.com/victordomingos/optimize-images/blob/master/docs/docs_EN.md)\n * [Português](https://github.com/victordomingos/optimize-images/blob/master/docs/docs_PT.md)\n\n\n\n## Installation and dependencies:\n\nTo install and run this application, you need to have a working\nPython 3.6+ installation. We try to keep the external dependencies at a minimum,\nin order to keep compatibility with different platforms, including Pythonista\non iOS. At this moment, we require:\n\n - Pillow>=5.1.0\n - piexif>=1.1.2\n\nThe easiest way to install it in a single step, including any dependencies, is \nby using this command:\n\n```\npip3 install pillow optimize-images\n```\n\nHowever, if you are on a Mac with Python 3.6 and macOS X 10.11 El Capitan or\nearlier, you should use Pillow 5.0.0 instead (use instead: \n`pip3 install pillow==5.0.0 optimize-images`). In case you have already\nmigrated to Python 3.7, you should be fine with Pillow 5.1.0 or later.\n\nYou can also use this application on iOS, using an called\n[Pythonista 3](http://omz-software.com/pythonista/) (which is, among other\nthings, a very nice environment for developing and/or running pure Python\napplications on iOS). Please check the detailed install procedure full in the \nuser documentation.\n\n## How to use\n\nThe most simple form of usage is to type a simple command in the shell, \npassing the path to an image or a folder containing images as an argument.\nThe optional `-nr` or `--no-recursion` switch argument tells the application not \nto scan recursively through the subdirectories.\n\nBy default, this utility applies lossy compression to JPEG files using a \nvariable quality setting between 75 and 80 (by Pillow's scale), that is\ndynamically determined for each image according to the amount of change caused\nin its pixels, then it removes any EXIF metadata, tries to optimize each\nencoder's settings for maximum space reduction and applies the maximum ZLIB\ncompression on PNG.\n\nYou must explicitly pass it a path to the source image file or to the\ndirectory containing the image files to be processed. By default, it will scan \nrecursively through all subfolders and process any images found using the \ndefault or user-provided settings, replacing each original file by its \nprocessed version if its file size is smaller than the original.\n\nIf no space savings were achieved for a given file, the original version will \nbe kept instead.\n\nThere are many other features and command-line options, like downsizing, \nkeeping EXIF data, color palete reduction, PNG to JPEG conversion. Please \ncheck the docs for further information.\n\n**DISCLAIMER: \nPlease note that the operation is done DESTRUCTIVELY, by replacing the\noriginal files with the processed ones. You definitely should duplicate the\nsource file or folder before using this utility, in order to be able to\nrecover any eventual damaged files or any resulting images that don't have the\ndesired quality.**\n\n\n## Basic usage\n\nTry to optimize a single image file:\n\n```\noptimize-images filename.jpg\n```\n\n\nTry to optimize all image files in current working directory and all of its\nsubdirectories:\n\n```\noptimize-images ./\n```\n\n\nTry to optimize all image files in current working directory, without recursion:\n\n```\noptimize-images -nr ./\n```\n\n```\noptimize-images --no-recursion ./\n```\n\n\n## Getting help\n\nTo check the list of available options and their usage, you just need to use one of the \nfollowing commands:\n\n\n```\noptimize-images -h\n```\n\n```\noptimize-images --help\n```\n\n\n## Did you find a bug or do you have a suggestion?\n\nPlease let me know, by opening a new issue or a pull request.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://no-title.victordomingos.com/projects/optimize-images/", "keywords": "python3 pythonista-ios pil pillow image-processing image-compression image-optimization image-optimisation seo seo-optimization website-performance cli recursive non-recursive", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "optimize-images", "package_url": "https://pypi.org/project/optimize-images/", "platform": "", "project_url": "https://pypi.org/project/optimize-images/", "project_urls": { "Bug Reports": "https://github.com/victordomingos/optimize-images/issues", "Documentation": "https://github.com/victordomingos/optimize-images/blob/master/docs/docs_EN.md", "Homepage": "https://no-title.victordomingos.com/projects/optimize-images/", "Source": "https://github.com/victordomingos/optimize-images" }, "release_url": "https://pypi.org/project/optimize-images/1.3.3/", "requires_dist": [ "piexif (>=1.1.2)" ], "requires_python": ">=3.6", "summary": "A command-line interface (CLI) utility written in pure Python to help you reduce the file size of images.", "version": "1.3.3" }, "last_serial": 5637026, "releases": { "1.2.0": [ { "comment_text": "", "digests": { "md5": "3a3037dc032379b2de6d871cc66bafca", "sha256": "95ba62e3df8dc1ccced5e8c7643fc494a15498194d3ec39e094b17a8f5558a6a" }, "downloads": -1, "filename": "optimize_images-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3a3037dc032379b2de6d871cc66bafca", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 23117, "upload_time": "2018-08-27T17:58:32", "url": "https://files.pythonhosted.org/packages/e4/cb/84b2ff17fa1a4e59bdfea2bd3e74c3b7d558397e11001af5a04ab24c4c46/optimize_images-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac8a1d242b51e2379b5e1e741f285fad", "sha256": "58628f10e0ceba6435ae155a56736906161688f50d637e1bf16e31aa81ba469b" }, "downloads": -1, "filename": "optimize-images-1.2.0.tar.gz", "has_sig": false, "md5_digest": "ac8a1d242b51e2379b5e1e741f285fad", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 18224, "upload_time": "2018-08-27T17:58:34", "url": "https://files.pythonhosted.org/packages/85/de/24332502a3657f9fb140e598042395fa348b6085e8a52cf629649fd272f0/optimize-images-1.2.0.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "69ad252bfbf41e76898a460702713be7", "sha256": "9eade0ffbb30fc347ffd2a1b7bb176b4d241321d330f893922a9f3360f734fca" }, "downloads": -1, "filename": "optimize_images-1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "69ad252bfbf41e76898a460702713be7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 21999, "upload_time": "2018-10-10T17:23:57", "url": "https://files.pythonhosted.org/packages/89/ee/01b50d5c9d538b844ec77c61d6409e746c41a69efc426f174d9f26795627/optimize_images-1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec5a2fbe4634899783bd388645f4689c", "sha256": "0bef3ae4bb9e704349ec5129b5456a792ea0a8c5bd0f416fddfd28aedfa98f53" }, "downloads": -1, "filename": "optimize-images-1.3.tar.gz", "has_sig": false, "md5_digest": "ec5a2fbe4634899783bd388645f4689c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 17850, "upload_time": "2018-10-10T17:23:59", "url": "https://files.pythonhosted.org/packages/6d/03/c981971061d2ff06463b5317947388fc05fda7f334c068053a017737a83b/optimize-images-1.3.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "08e53904b07b2515e697cb95dfe5db14", "sha256": "f1aa1ea1fb6d3c7f6ea32b81fbe2bb22f9c9293476956da274cc0d5ae3609313" }, "downloads": -1, "filename": "optimize_images-1.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "08e53904b07b2515e697cb95dfe5db14", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 22228, "upload_time": "2019-05-03T00:13:50", "url": "https://files.pythonhosted.org/packages/06/ad/9a4bce6a9f2217d52d1ac896d2a5918c66f48d7424544671bc0f6130eeb7/optimize_images-1.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11ba441d0e19f0fe473880ece4baf970", "sha256": "d81cf0e2058bccef8db17937215a82fe61c1f9bf4df52bd74a42bcc9fdb3c357" }, "downloads": -1, "filename": "optimize-images-1.3.1.tar.gz", "has_sig": false, "md5_digest": "11ba441d0e19f0fe473880ece4baf970", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 18071, "upload_time": "2019-05-03T00:13:52", "url": "https://files.pythonhosted.org/packages/ef/b3/bceae17551079cbfa21db064ecc223489474ab4036b0e2c9d8e9d789cb01/optimize-images-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "1ee892c5d36a7547f6eb4efc0aa1a92e", "sha256": "c163a352b9e43a91ce5276a8c41d129505602f73b23dfa9efd36ac8bd49aa431" }, "downloads": -1, "filename": "optimize_images-1.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1ee892c5d36a7547f6eb4efc0aa1a92e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 22544, "upload_time": "2019-06-27T00:23:26", "url": "https://files.pythonhosted.org/packages/41/09/7af365e76803960eee8877feeb7203f96fea0c57dd56371844b23a8ac327/optimize_images-1.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "14b46071f870b7a96573527d8d53ca23", "sha256": "49e437d2301dae89118bcd061d556494427e78d9081a3d294f086f88b973d675" }, "downloads": -1, "filename": "optimize-images-1.3.2.tar.gz", "has_sig": false, "md5_digest": "14b46071f870b7a96573527d8d53ca23", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 18336, "upload_time": "2019-06-27T00:23:29", "url": "https://files.pythonhosted.org/packages/14/58/2d2a35ded9394af72bac8d206931c9e710aa145f587798d1a0973fd0899d/optimize-images-1.3.2.tar.gz" } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "e572a013ba0f04869591abbd44ee1588", "sha256": "43404a9999e6bab8795327f9ffda920eb18d41b1a0bfb60b69fbd6ea8950c4cf" }, "downloads": -1, "filename": "optimize_images-1.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e572a013ba0f04869591abbd44ee1588", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 22605, "upload_time": "2019-08-06T00:30:03", "url": "https://files.pythonhosted.org/packages/41/f8/aa8054e45d80a096c1f85349d17391ddf43cdb97adcd1b7abcfac025decc/optimize_images-1.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "95aac550a808570f958872d349827fb1", "sha256": "173adafdfc3196d6d6b18951fad1179dbbde09326a46c531df1b1291960157e9" }, "downloads": -1, "filename": "optimize-images-1.3.3.tar.gz", "has_sig": false, "md5_digest": "95aac550a808570f958872d349827fb1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 18471, "upload_time": "2019-08-06T00:30:15", "url": "https://files.pythonhosted.org/packages/8e/29/479af6dc6888005e9bbd2823a4448aa8bd0f1183ce4875d6ac6d3c6772ae/optimize-images-1.3.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e572a013ba0f04869591abbd44ee1588", "sha256": "43404a9999e6bab8795327f9ffda920eb18d41b1a0bfb60b69fbd6ea8950c4cf" }, "downloads": -1, "filename": "optimize_images-1.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e572a013ba0f04869591abbd44ee1588", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 22605, "upload_time": "2019-08-06T00:30:03", "url": "https://files.pythonhosted.org/packages/41/f8/aa8054e45d80a096c1f85349d17391ddf43cdb97adcd1b7abcfac025decc/optimize_images-1.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "95aac550a808570f958872d349827fb1", "sha256": "173adafdfc3196d6d6b18951fad1179dbbde09326a46c531df1b1291960157e9" }, "downloads": -1, "filename": "optimize-images-1.3.3.tar.gz", "has_sig": false, "md5_digest": "95aac550a808570f958872d349827fb1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 18471, "upload_time": "2019-08-06T00:30:15", "url": "https://files.pythonhosted.org/packages/8e/29/479af6dc6888005e9bbd2823a4448aa8bd0f1183ce4875d6ac6d3c6772ae/optimize-images-1.3.3.tar.gz" } ] }