{ "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": "ENIMDA\n======\n\nEntropy-based image border detection algorithm: finds out if your image has\nborders or whitespaces around and helps you to trim border providing whitespace\noffsets for every side of a picture, supports animated GIFs.\n\n|pypi| |travisci|\n\n.. |pypi| image:: https://badge.fury.io/py/enimda.svg\n :target: https://badge.fury.io/py/enimda\n :alt: pypi version\n.. |travisci| image:: https://travis-ci.org/embali/enimda.svg?branch=master\n :target: https://travis-ci.org/embali/enimda\n :alt: travis ci build status\n\nAlgorithm (simplified)\n----------------------\n\nFor each side of the image starting from top, rotating image counterclockwise\nto keep side of interest on top:\n\n* Get upper block 25% of image height\n* Get lower block with the same height as the upper one\n* Calculate entropy for both blocks and their difference\n* Make upper block 1px less\n* Repeat from p.2 until we hit image edge\n* Border is between blocks with entropy difference maximum\n\n.. image:: https://raw.githubusercontent.com/embali/enimda/master/algorithm.gif\n :alt: Sliding from center to edge - searching for maximum entropy difference\n :width: 300\n :height: 300\n\nRequirements\n------------\n\nPython 3.5+\n\nSetup\n-----\n\n.. code-block:: bash\n \n python-3.6 -m venv .env\n source .env/bin/activate\n pip install enimda\n\nUsage\n-----\n\nFind if image has borders:\n\n.. code-block:: python\n\n from enimda import ENIMDA\n\n\n # Load target image\n em = ENIMDA(fp='test.jpg')\n\n # Scan for borders with high precision\n borders = em.scan(fast=False)\n\n # Print found image borders (tuple): top, right, bottom, left\n print(borders)\n\nDemo\n----\n\nFor demo please refer to `ENIMDA Demo `_\n\nAlso it lives at `Picture Instruments `_ as 'Remove borders'\ninstrument\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/enimda/", "keywords": "image border whitespace detection algorithm enimda entropy", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "enimda", "package_url": "https://pypi.org/project/enimda/", "platform": "", "project_url": "https://pypi.org/project/enimda/", "project_urls": { "Homepage": "https://github.com/embali/enimda/" }, "release_url": "https://pypi.org/project/enimda/2.1.0/", "requires_dist": null, "requires_python": "", "summary": "Entropy-based image border detection algorithm library", "version": "2.1.0" }, "last_serial": 2898845, "releases": { "1.0.0b1": [ { "comment_text": "", "digests": { "md5": "bdaa0561cd04711560e00309877b0423", "sha256": "55a3892dd8ff0a27138fd0a0521b1584837cdd56a1bc9c7d57ec8cb86d7f7872" }, "downloads": -1, "filename": "enimda-1.0.0b1-py3-none-any.whl", "has_sig": false, "md5_digest": "bdaa0561cd04711560e00309877b0423", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4849, "upload_time": "2016-06-19T19:00:54", "url": "https://files.pythonhosted.org/packages/dc/cc/f4f7362ab37d8ba71800cf6b744fc00f2f3d843248c97b052669968038f4/enimda-1.0.0b1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dbb459606ff2b33630de57f5d6ec20da", "sha256": "32a6ca9bef59fd054a895ad9d22552cbf93b471ffb36aa28dab330937292e63d" }, "downloads": -1, "filename": "enimda-1.0.0b1.tar.gz", "has_sig": false, "md5_digest": "dbb459606ff2b33630de57f5d6ec20da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3877, "upload_time": "2016-06-19T19:00:58", "url": "https://files.pythonhosted.org/packages/1a/ec/6248ef7d6e8992881908ae27ab6dd98739e67bf7008fb43317261a9e8451/enimda-1.0.0b1.tar.gz" } ], "1.0.0b2": [ { "comment_text": "", "digests": { "md5": "4b36c303f88f9128f45ab70f4120882a", "sha256": "09536b75d93c18b14e2f7ec5c41ea03be445f816339fa5d223b9a9e44b64cf18" }, "downloads": -1, "filename": "enimda-1.0.0b2-py3-none-any.whl", "has_sig": false, "md5_digest": "4b36c303f88f9128f45ab70f4120882a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5085, "upload_time": "2016-06-19T19:27:11", "url": "https://files.pythonhosted.org/packages/0d/b6/ed67b5e18aabd8c5a33d754bd6c77fd075435727e09ad9091f27c012d6aa/enimda-1.0.0b2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6e87a25ea055f239f869d362109b9f8e", "sha256": "1f4bd7bbed948105d5ab0565921cbf1507e48808d8089259f82c979b9059ab25" }, "downloads": -1, "filename": "enimda-1.0.0b2.tar.gz", "has_sig": false, "md5_digest": "6e87a25ea055f239f869d362109b9f8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4039, "upload_time": "2016-06-19T19:27:15", "url": "https://files.pythonhosted.org/packages/82/6a/8aa11ab34da7b450445d7a3b3f58628ecb02d438298993c3a85758454287/enimda-1.0.0b2.tar.gz" } ], "1.0.0b3": [ { "comment_text": "", "digests": { "md5": "c6cce320a9478ff7f09eae2cf13991bc", "sha256": "5de81f4892e000d6fe44c16f9a656a3120711aac6e4c859c6db792144e3d1cd6" }, "downloads": -1, "filename": "enimda-1.0.0b3-py3-none-any.whl", "has_sig": false, "md5_digest": "c6cce320a9478ff7f09eae2cf13991bc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5086, "upload_time": "2016-06-19T19:32:15", "url": "https://files.pythonhosted.org/packages/33/55/dafacc0372b409870c246d5b0d61a9edf87ba6ea8f755d0957a33ef01491/enimda-1.0.0b3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c321f360fe5eb38710fb31a28bc2a323", "sha256": "2aa93fd29038f994a976854b1e8c7d29cf4ab1acc498b0320c3f53a5ccfd0566" }, "downloads": -1, "filename": "enimda-1.0.0b3.tar.gz", "has_sig": false, "md5_digest": "c321f360fe5eb38710fb31a28bc2a323", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4038, "upload_time": "2016-06-19T19:32:20", "url": "https://files.pythonhosted.org/packages/ea/9d/246b9b6add14c6e327d44555aa910c11e83908674ba56a3565c6e7c4ed16/enimda-1.0.0b3.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "3149386c849712e7c6c5f7966672ef77", "sha256": "4fb7fe00f02a709e12114bc43a33f18e97392786f9476695e92dae31bcb71dea" }, "downloads": -1, "filename": "enimda-1.1.6.tar.gz", "has_sig": false, "md5_digest": "3149386c849712e7c6c5f7966672ef77", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16411, "upload_time": "2016-09-24T10:21:44", "url": "https://files.pythonhosted.org/packages/9e/95/79c23d6a23814b38dd2d1e0484996614f968bdefcc455be953d8b65afdad/enimda-1.1.6.tar.gz" } ], "1.1.7": [ { "comment_text": "", "digests": { "md5": "0a4288fa6c679a15786133bc9653a0d1", "sha256": "113ced183a9436ee12de0188bcacc754710b185fec6de4d1ddc64ceb7a1ca1a9" }, "downloads": -1, "filename": "enimda-1.1.7.tar.gz", "has_sig": false, "md5_digest": "0a4288fa6c679a15786133bc9653a0d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16423, "upload_time": "2016-09-24T10:52:41", "url": "https://files.pythonhosted.org/packages/0c/32/30d9cf8a05b509bfe442651a4861ac2476cafcd3cf0adadff077e830c2e5/enimda-1.1.7.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "312e6a16055fd741d9e98775652ba94d", "sha256": "689ce3e332250fddf348faf88f4815b0e68b2d31c00a030ca8d932e772692284" }, "downloads": -1, "filename": "enimda-2.0.0.tar.gz", "has_sig": false, "md5_digest": "312e6a16055fd741d9e98775652ba94d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4302, "upload_time": "2017-05-08T22:43:08", "url": "https://files.pythonhosted.org/packages/56/15/e4088b8bbce9bd3b439d27fb599789976934ca9527982d00a38bc5c5cd30/enimda-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "447057756d4a5314e328f7499ff37585", "sha256": "2f554111ad38f416d1697fb8cbb6fb3764512dab38f4d6d949b7670d7c0a158b" }, "downloads": -1, "filename": "enimda-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "447057756d4a5314e328f7499ff37585", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6772, "upload_time": "2017-05-25T19:40:11", "url": "https://files.pythonhosted.org/packages/17/42/5673f9d93d8dc3215798d9ea6ec5eb745a3b7f52965d7675bf2d41bd2916/enimda-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "18753a9bbd2001e18679c88c21f9db55", "sha256": "597b4c8267df47b925b76c28c0435ebb3095ea8f80a03231f651d8fff367902a" }, "downloads": -1, "filename": "enimda-2.1.0.tar.gz", "has_sig": false, "md5_digest": "18753a9bbd2001e18679c88c21f9db55", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4207, "upload_time": "2017-05-25T19:40:00", "url": "https://files.pythonhosted.org/packages/0a/ff/41707bef9f0f20f135dd6ff4ca281eab6820b0284ff1b12d009ed746d5e5/enimda-2.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "447057756d4a5314e328f7499ff37585", "sha256": "2f554111ad38f416d1697fb8cbb6fb3764512dab38f4d6d949b7670d7c0a158b" }, "downloads": -1, "filename": "enimda-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "447057756d4a5314e328f7499ff37585", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 6772, "upload_time": "2017-05-25T19:40:11", "url": "https://files.pythonhosted.org/packages/17/42/5673f9d93d8dc3215798d9ea6ec5eb745a3b7f52965d7675bf2d41bd2916/enimda-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "18753a9bbd2001e18679c88c21f9db55", "sha256": "597b4c8267df47b925b76c28c0435ebb3095ea8f80a03231f651d8fff367902a" }, "downloads": -1, "filename": "enimda-2.1.0.tar.gz", "has_sig": false, "md5_digest": "18753a9bbd2001e18679c88c21f9db55", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4207, "upload_time": "2017-05-25T19:40:00", "url": "https://files.pythonhosted.org/packages/0a/ff/41707bef9f0f20f135dd6ff4ca281eab6820b0284ff1b12d009ed746d5e5/enimda-2.1.0.tar.gz" } ] }