{ "info": { "author": "Anton Smolin", "author_email": "smolin.anton@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "ImgPy\n=====\n\nImage processing library for Python with animated GIFs support - proxy wrapper around `Pillow `_ library with simple usable interface and access to each frame.\n\n|pypi| |travisci|\n\n.. |pypi| image:: https://badge.fury.io/py/imgpy.svg\n :target: https://badge.fury.io/py/imgpy\n :alt: pypi version\n.. |travisci| image:: https://travis-ci.org/embali/imgpy.svg?branch=master\n :target: https://travis-ci.org/embali/imgpy\n :alt: travis ci build status\n\nFeatures\n--------\n\nAttributes:\n\n* `info `_\n* exif - dict with EXIF tags and GPS dict with GPS tags if presented\n* `format `_\n* `size `_\n* `width `_\n* `height `_\n* `mode `_\n* mode_desc - image mode description\n* frame_count - frame count\n* animated - flag, which shows if image is animated\n* frames - frame list\n\nMethods:\n\n* `convert `_\n* `crop `_\n* `filter `_\n* `paste `_\n* `resize `_\n* `rotate `_\n* `thumbnail `_\n* `transform `_\n* `transpose `_\n* load - gets called when you access **frames** attribute for the first time or call any processing or save method, call this method explicitly to load all or limited number of frames (first n frames or random n frames without reordering)\n* save - save image\n* close - close image\n\nRequirements\n------------\n\n* Python 3.5+\n* Pillow 4.1.1+\n\nSetup\n-----\n\n.. code-block:: bash\n \n python-3.6 -m venv .env\n source .env/bin/activate\n pip install imgpy\n\nUsage\n-----\n\n.. code-block:: python\n\n from imgpy import Img\n\n\n # Crop image\n with Img(fp='test.gif') as im:\n im.crop(box=(10, 10, 110, 110))\n im.save(fp='crop.gif')\n\n # Create thumbnail image\n with Img(fp='test.gif') as im:\n im.thumbnail(size=(100, 100))\n im.save(fp='thumb.gif')\n\n # Save 10 random GIF frames\n with Img(fp='test.gif') as im:\n im.load(limit=10, first=False)\n im.save(fp='random.gif')\n\nTests\n-----\n\nRun tests: py.test\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/embali/imgpy/", "keywords": "image info crop resize thumbnail gif", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "imgpy", "package_url": "https://pypi.org/project/imgpy/", "platform": "", "project_url": "https://pypi.org/project/imgpy/", "project_urls": { "Homepage": "https://github.com/embali/imgpy/" }, "release_url": "https://pypi.org/project/imgpy/1.1.0/", "requires_dist": null, "requires_python": "", "summary": "Image processing library for Python with animated GIFs support", "version": "1.1.0" }, "last_serial": 2873915, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "63e2b85c7322fa31cd2f4f9a55f42756", "sha256": "f41f7884e66d21759a506d0ffc2034cdba84ea80e171796a581f89dac91eaa18" }, "downloads": -1, "filename": "imgpy-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "63e2b85c7322fa31cd2f4f9a55f42756", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 3881, "upload_time": "2017-05-09T17:38:00", "url": "https://files.pythonhosted.org/packages/8d/1e/5f9e3e7a2cbe66f008e9d2df11406d940ed71b91e187e558041fb1d691e9/imgpy-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c0638812d0d8083efcfbbe21409893d9", "sha256": "70b8af5486020124cd4a214ef37eebe40030c5ef223694ae7a5092b00adf8cd5" }, "downloads": -1, "filename": "imgpy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "c0638812d0d8083efcfbbe21409893d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3237, "upload_time": "2017-05-09T17:37:47", "url": "https://files.pythonhosted.org/packages/82/92/084bd6a0720bc156e2db6cafd7902795e5daa28603a7fce60ed84b9666fa/imgpy-0.1.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "267d27988802b7fd34596602c184d0a0", "sha256": "a3ab733a7d60db1f00167154462a4cb92b7afab9a36f7b4ceabaca7abc328cf1" }, "downloads": -1, "filename": "imgpy-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "267d27988802b7fd34596602c184d0a0", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 4509, "upload_time": "2017-05-13T20:33:41", "url": "https://files.pythonhosted.org/packages/23/8d/a7f066a145f41bb50cbb8bb11c8411b3d3e967899dba133f354244cbf32e/imgpy-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c97b277ef84ec771ffd66c7081c3c1d", "sha256": "df931f3dee32bfb5205df465cc6baa0b4eb83b604f79fdecaada92c318c7d52a" }, "downloads": -1, "filename": "imgpy-1.0.0.tar.gz", "has_sig": false, "md5_digest": "7c97b277ef84ec771ffd66c7081c3c1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3613, "upload_time": "2017-05-13T20:33:32", "url": "https://files.pythonhosted.org/packages/c0/4d/0808a5fd85a20b97e0ff6932cac02614917d2b9f2f172249c827a8d29224/imgpy-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "6f60337d0ac1378db42645c3dafd6c14", "sha256": "7f04b0911da0f1b44a17f54bbc3358f8e4cf62144ece8238222b8f54a429b1e0" }, "downloads": -1, "filename": "imgpy-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6f60337d0ac1378db42645c3dafd6c14", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 5393, "upload_time": "2017-05-14T19:52:54", "url": "https://files.pythonhosted.org/packages/06/2f/11b168eb9a71762f12dc7fff292d5f28c839cd058b825ace3eeba0257dd6/imgpy-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36b16170c5fbc51885a625814a848bd0", "sha256": "ae154ec31f4b095ad5acb8ed7165e5f1c13b96768d998f322498382afa1abc13" }, "downloads": -1, "filename": "imgpy-1.1.0.tar.gz", "has_sig": false, "md5_digest": "36b16170c5fbc51885a625814a848bd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4273, "upload_time": "2017-05-14T19:52:45", "url": "https://files.pythonhosted.org/packages/65/1e/7f8cdfc3072438a16c433b4adf4a421eb3b4a47dcf28efe44858b2c79fcd/imgpy-1.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6f60337d0ac1378db42645c3dafd6c14", "sha256": "7f04b0911da0f1b44a17f54bbc3358f8e4cf62144ece8238222b8f54a429b1e0" }, "downloads": -1, "filename": "imgpy-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6f60337d0ac1378db42645c3dafd6c14", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 5393, "upload_time": "2017-05-14T19:52:54", "url": "https://files.pythonhosted.org/packages/06/2f/11b168eb9a71762f12dc7fff292d5f28c839cd058b825ace3eeba0257dd6/imgpy-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36b16170c5fbc51885a625814a848bd0", "sha256": "ae154ec31f4b095ad5acb8ed7165e5f1c13b96768d998f322498382afa1abc13" }, "downloads": -1, "filename": "imgpy-1.1.0.tar.gz", "has_sig": false, "md5_digest": "36b16170c5fbc51885a625814a848bd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4273, "upload_time": "2017-05-14T19:52:45", "url": "https://files.pythonhosted.org/packages/65/1e/7f8cdfc3072438a16c433b4adf4a421eb3b4a47dcf28efe44858b2c79fcd/imgpy-1.1.0.tar.gz" } ] }