{ "info": { "author": "Tyler N. Thieding", "author_email": "python@thieding.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Multimedia :: Graphics :: Editors" ], "description": "##############\n[exif] Package\n##############\n\n.. image:: https://www.gitlab.com/TNThieding/exif/badges/master/build.svg\n :target: https://gitlab.com/TNThieding/exif\n\n.. image:: https://www.gitlab.com/tnthieding/exif/badges/master/coverage.svg\n :target: https://gitlab.com/TNThieding/exif\n\n.. image:: https://readthedocs.org/projects/exif/badge/?version=latest\n :target: https://exif.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\nRead and modify image EXIF metadata using Python without any third-party software\ndependencies. For example, batch process image metadata using a Python script.\n\n***********\nQuick Start\n***********\n\nOpen an image with EXIF metadata using the Python ``open()`` built-in function. Ensure the\nbinary mode flag is set. Pass this image file object into the ``exif.Image`` class::\n\n >>> from exif import Image\n >>> with open('grand_canyon.jpg', 'rb') as image_file:\n ... my_image = Image(image_file)\n ...\n >>> my_image.has_exif\n True\n\nList EXIF attributes using the Python ``dir()`` builtin function::\n\n >>> dir(my_image)\n ['', '', '_exif_ifd_pointer', '_gps_ifd_pointer', '_segments', 'aperture\n _value', 'brightness_value', 'color_space', 'components_configuration', 'compression', 'datetime', 'datetime_digitized',\n 'datetime_original', 'exif_version', 'exposure_bias_value', 'exposure_mode', 'exposure_program', 'exposure_time', 'f_nu\n mber', 'flash', 'flashpix_version', 'focal_length', 'focal_length_in_35mm_film', 'get_file', 'gps_altitude', 'gps_altitu\n de_ref', 'gps_datestamp', 'gps_dest_bearing', 'gps_dest_bearing_ref', 'gps_horizontal_positioning_error', 'gps_img_direc\n tion', 'gps_img_direction_ref', 'gps_latitude', 'gps_latitude_ref', 'gps_longitude', 'gps_longitude_ref', 'gps_speed', '\n gps_speed_ref', 'gps_timestamp', 'jpeg_interchange_format', 'jpeg_interchange_format_length', 'lens_make', 'lens_model',\n 'lens_specification', 'make', 'maker_note', 'metering_mode', 'model', 'orientation', 'photographic_sensitivity', 'pixel\n _x_dimension', 'pixel_y_dimension', 'resolution_unit', 'scene_capture_type', 'scene_type', 'sensing_method', 'shutter_sp\n eed_value', 'software', 'subject_area', 'subsec_time_digitized', 'subsec_time_original', 'white_balance', 'x_resolution',\n 'y_and_c_positioning', 'y_resolution']\n\nAccess EXIF metadata tags using Python attribute notation::\n\n >>> # Read tags with Python \"get\" notation.\n >>> my_image.gps_latitude\n (36.0, 3.0, 11.08)\n >>> my_image.gps_longitude\n (112.0, 5.0, 4.18)\n >>> my_image.model\n 'iPhone 7'\n >>>\n >>> # Modify tags with Python \"set\" notation.\n >>> my_image.make = \"Python\"\n >>>\n >>> # Delete tags with Python \"del\" notation.\n >>> del my_image.gps_latitude\n >>> del my_image.gps_longitude\n\nWrite the image with modified EXIF metadata to an image file using ``open()`` in binary\nwrite mode::\n\n >>> with open('modified_image.jpg', 'wb') as new_image_file:\n ... new_image_file.write(my_image.get_file())\n ...\n\nRefer to the usage page for information and examples of alternative ways to access EXIF tags (e.g.\nwith index/item syntax or with methods).\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/TNThieding/exif", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/TNThieding/exif", "keywords": "", "license": "MIT License", "maintainer": "Tyler N. Thieding", "maintainer_email": "python@thieding.com", "name": "exif", "package_url": "https://pypi.org/project/exif/", "platform": "", "project_url": "https://pypi.org/project/exif/", "project_urls": { "Download": "https://github.com/TNThieding/exif", "Homepage": "https://github.com/TNThieding/exif" }, "release_url": "https://pypi.org/project/exif/0.8.1/", "requires_dist": [ "enum34" ], "requires_python": "", "summary": "Read and modify image EXIF metadata using Python.", "version": "0.8.1" }, "last_serial": 5596361, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "480449599cf2c778035cc9bd6dfd2f7f", "sha256": "b75c9490d6a44379aedce0a42ead90ed89e3050cd44ae5e63fe4c1bbb2527440" }, "downloads": -1, "filename": "exif-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "480449599cf2c778035cc9bd6dfd2f7f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 2957263, "upload_time": "2018-12-23T18:02:20", "url": "https://files.pythonhosted.org/packages/c1/d4/df7cfd34f454b18bbcbeca7aaff3b2732f3d5af7973793da5fa4e4058bf6/exif-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "af32c61f878bdc7407a3982f57d92782", "sha256": "1b89633929ce2535a5dc5848e7d3a78b54aa5daa79f5768b3d949b6e6bd8a105" }, "downloads": -1, "filename": "exif-0.1.0.tar.gz", "has_sig": false, "md5_digest": "af32c61f878bdc7407a3982f57d92782", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2946826, "upload_time": "2018-12-23T18:02:31", "url": "https://files.pythonhosted.org/packages/40/55/ef46d02d136d1fdf638652092cd1e49e62a3b859424174ddeb8a4bb77894/exif-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "68b474452e4450ed0c3e1b68379a5851", "sha256": "89c37f8af41b0493ec09d2b9017aedd99e9065f1b29d288330d6144ef1503cd2" }, "downloads": -1, "filename": "exif-0.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "68b474452e4450ed0c3e1b68379a5851", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 2975635, "upload_time": "2018-12-26T00:49:56", "url": "https://files.pythonhosted.org/packages/41/b6/e682b1c502db138914d3e3dc8363c9effa168190bb5514a4846e13a025ea/exif-0.2.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "731ad094c3124bdaba6f98d8cf9da49a", "sha256": "efba949fcd53c25a4f10f0089b97605cdeafdba397f3c5ebbe4bba89b5133adb" }, "downloads": -1, "filename": "exif-0.2.0.tar.gz", "has_sig": false, "md5_digest": "731ad094c3124bdaba6f98d8cf9da49a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2958489, "upload_time": "2018-12-26T00:48:34", "url": "https://files.pythonhosted.org/packages/fb/f5/3b690cd2f2c54f183775265c48ed48de07f3917e90640c6ed059ef6f2971/exif-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "52ef71f644603c56d3ac497da3045192", "sha256": "83778613eb40b30aba30b4915a8cf5cfd27c28b395779a49fabd9cd28bbe1869" }, "downloads": -1, "filename": "exif-0.3.0-py2-none-any.whl", "has_sig": false, "md5_digest": "52ef71f644603c56d3ac497da3045192", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 3004000, "upload_time": "2018-12-27T02:06:16", "url": "https://files.pythonhosted.org/packages/b5/eb/7bb7ea90d6b09420db9fb0a764f3b4dd94f81416e1daf18b5f0351159e96/exif-0.3.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5f9c9fabb31602149b45f359ad292d89", "sha256": "dd3baecff4053f3bbf428e262c8f7be09db1d896ac8945db366d51fb44405794" }, "downloads": -1, "filename": "exif-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5f9c9fabb31602149b45f359ad292d89", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3004776, "upload_time": "2018-12-27T02:06:25", "url": "https://files.pythonhosted.org/packages/27/32/4cafe2cfc0d934482a6408278ac24abe084c5ad791b7d9578781a1b1626d/exif-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "585904d5719b5576d83adeb70f432a88", "sha256": "fc3725e9b5cc928cff47b4d901c90c9fd4be46bfad17b52afbd8017a983771aa" }, "downloads": -1, "filename": "exif-0.3.0.tar.gz", "has_sig": false, "md5_digest": "585904d5719b5576d83adeb70f432a88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2970770, "upload_time": "2018-12-27T02:06:32", "url": "https://files.pythonhosted.org/packages/c5/2d/eae14a8c9410d555ffffa4187f6e692df319fd4b92041dc35fcaf657651a/exif-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "eac6934961cea3e72ceb2f0123a72830", "sha256": "ad276268e191f5d153c4350dbacae5534cfbd846ab3636d1012c724e8e37faad" }, "downloads": -1, "filename": "exif-0.3.1-py2-none-any.whl", "has_sig": false, "md5_digest": "eac6934961cea3e72ceb2f0123a72830", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 3010151, "upload_time": "2019-02-10T15:20:22", "url": "https://files.pythonhosted.org/packages/cf/8c/45469285ad02e2d653069f1d525ecccb52400137d4e497ec3285c8383ca9/exif-0.3.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d2dd5c1c61de3efb458322e6cc9dfe7e", "sha256": "b377d837df7f700d4cfc4e421d9b0d70695b84683ac078b3d1c2c14fff089e2c" }, "downloads": -1, "filename": "exif-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d2dd5c1c61de3efb458322e6cc9dfe7e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3010925, "upload_time": "2019-02-10T15:20:31", "url": "https://files.pythonhosted.org/packages/8c/a8/da0046a2c23758b81a0f73e222c34d6a968871e655291530af7550ebef81/exif-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c56b12efef8ed1e31bdc50e6e579fd96", "sha256": "e624665a3c7f7a98f24d0379e6566204b7047b3afa1349824ec998ed55cef1c7" }, "downloads": -1, "filename": "exif-0.3.1.tar.gz", "has_sig": false, "md5_digest": "c56b12efef8ed1e31bdc50e6e579fd96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2974156, "upload_time": "2019-02-10T15:20:40", "url": "https://files.pythonhosted.org/packages/8a/0f/9cdc574250addf70c5bc51166c91bd41e33c0c0c3827b96232e13f885cb8/exif-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "4e7c1dca30e2db5c5bd65fe877442297", "sha256": "be3c920db8294c021e16d5ab31d57d3b8222842975ed44c596e5bcae6439d32d" }, "downloads": -1, "filename": "exif-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4e7c1dca30e2db5c5bd65fe877442297", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3011356, "upload_time": "2019-03-17T15:39:58", "url": "https://files.pythonhosted.org/packages/ae/5e/083fbb40ea96a05e658234f3d598a43baefa684732d11d6ce41511a08a97/exif-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c5a1f0e7ecc1bbfc0c191e093ef66b0a", "sha256": "c610b0a9e3e14b8519a00c03a5a122293452027be59caf86526f9a6afec17cdf" }, "downloads": -1, "filename": "exif-0.4.0.tar.gz", "has_sig": false, "md5_digest": "c5a1f0e7ecc1bbfc0c191e093ef66b0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2974018, "upload_time": "2019-03-17T15:40:07", "url": "https://files.pythonhosted.org/packages/5a/7a/f9b74cfcae7865a31d7a88441ea999105d2c32a9e3f515db4f00c2b04ee3/exif-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "d132f7c67e9f73f9c6be44f683060afd", "sha256": "c48d91905c68f48d32a830b7c8d1632d593dc4cd4289cb9586cfde21c2a403b8" }, "downloads": -1, "filename": "exif-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d132f7c67e9f73f9c6be44f683060afd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3011646, "upload_time": "2019-04-13T16:55:35", "url": "https://files.pythonhosted.org/packages/87/ed/c9fa69e8763531dc4e53644a4a4f7327a6b03a1889a34a9093dd26254ab7/exif-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0dda906b93bfd4195fb548d82eaeb009", "sha256": "a334b6d3a6b33bad1b7733f5ce4602b0ecade8d5f221485ffa7fde75c5c0cea0" }, "downloads": -1, "filename": "exif-0.5.0.tar.gz", "has_sig": false, "md5_digest": "0dda906b93bfd4195fb548d82eaeb009", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2974316, "upload_time": "2019-04-13T16:55:45", "url": "https://files.pythonhosted.org/packages/63/7c/5683de4a666d2f81348a2f167ad3652643fd600965d84d3c5335f75109da/exif-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "faf6a2e7624bb07233e74ea758c8cba1", "sha256": "3af2565ce08c1b182f690ae66748e334a55ba742bbcdf780ed013f9b41dbb2e8" }, "downloads": -1, "filename": "exif-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "faf6a2e7624bb07233e74ea758c8cba1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3032554, "upload_time": "2019-04-14T20:33:04", "url": "https://files.pythonhosted.org/packages/67/79/eb03c08c28b069ae574442de6da2f73f3b0410309b70506fa719a2ce3d86/exif-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2cbabf8231b2bf22a0dc025daf3112ee", "sha256": "95f734727497f369a2d1aa7d8b56a5850fe264008892cd93da350328877590c3" }, "downloads": -1, "filename": "exif-0.5.1.tar.gz", "has_sig": false, "md5_digest": "2cbabf8231b2bf22a0dc025daf3112ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2994551, "upload_time": "2019-04-14T20:33:13", "url": "https://files.pythonhosted.org/packages/e8/1e/f86a3a62d7788b9f8f1c54a38a8db1fc408bb3903a69549603e2ab317738/exif-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "fd40d0ac536be63d71fa9f8c82db70ee", "sha256": "868cf800aae3939f1b1f5d60af8340ad1c1fd333705c7dd49ad4a19c1c7b4f96" }, "downloads": -1, "filename": "exif-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fd40d0ac536be63d71fa9f8c82db70ee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2989676, "upload_time": "2019-06-16T16:57:00", "url": "https://files.pythonhosted.org/packages/dc/9b/af61754f60b407e8382253f319b13fed2bc53ebbecf5f283f451d508a5df/exif-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "02bb7c52ff35f202c649db8c4dcf3fa4", "sha256": "ac2c2483917c5c9a0c7eef47f2bd7937964cfcce5af4e54c9e82e40e00cc04d6" }, "downloads": -1, "filename": "exif-0.6.0.tar.gz", "has_sig": false, "md5_digest": "02bb7c52ff35f202c649db8c4dcf3fa4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2955044, "upload_time": "2019-06-16T16:57:02", "url": "https://files.pythonhosted.org/packages/42/b1/4fe1c09df065dbaa4d775f4228bcf833718c9ff04551809a443f5568cbdf/exif-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "a52f27d06bf9de10a75036e29b98076e", "sha256": "8311eb18d3f4134a89cbedb9227b74b4d1525f1ecb3225623d802c1b7ff612d5" }, "downloads": -1, "filename": "exif-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a52f27d06bf9de10a75036e29b98076e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2997481, "upload_time": "2019-06-23T16:20:29", "url": "https://files.pythonhosted.org/packages/2e/c4/cb9356bcb4aa30ef52b8234abf69ff8802b92bf0a68a141ea4e267d722d3/exif-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "847a9a8ec1854fde70180ed06fcec9d8", "sha256": "ac85407551fa3e2e39be04069da94645d772157ad6291a84d6652eec1c69ebad" }, "downloads": -1, "filename": "exif-0.7.0.tar.gz", "has_sig": false, "md5_digest": "847a9a8ec1854fde70180ed06fcec9d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2955858, "upload_time": "2019-06-23T16:20:31", "url": "https://files.pythonhosted.org/packages/96/fb/f193fc9a96406b4f7c5cf9bb5a1a636eb6a593422b0c9605a76676256418/exif-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "c3c5b7a14d7200dbd28726b0da567226", "sha256": "cef0796d7d990708a3353be307686af1352068a306eac74dabf8746c7dbc4ffe" }, "downloads": -1, "filename": "exif-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c3c5b7a14d7200dbd28726b0da567226", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2998024, "upload_time": "2019-07-07T22:40:24", "url": "https://files.pythonhosted.org/packages/b5/75/05196642f4427f3fa756dc1cf83b30da81f9a7583c800da2f4ce09e2b0c9/exif-0.8.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "725d201ad6a9df1fc89035907fcf7582", "sha256": "db17465a10415897e14fcaf66754fa7a2deb88fb82eb1be9ff654e1cd2d2842e" }, "downloads": -1, "filename": "exif-0.8.0.tar.gz", "has_sig": false, "md5_digest": "725d201ad6a9df1fc89035907fcf7582", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2956292, "upload_time": "2019-07-07T22:40:26", "url": "https://files.pythonhosted.org/packages/12/a9/08b9f3171914cf0ed5f5e68942c2aad4e4c2a5010f989c18e4ad4f6abb67/exif-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "604caa6dd0a4aabba3a17bb4bdb6a0d6", "sha256": "ae41ed65cd3d51dafb0e8adccc1280fc39d8c27bdffd0581417b1e89352794a7" }, "downloads": -1, "filename": "exif-0.8.1-py3-none-any.whl", "has_sig": false, "md5_digest": "604caa6dd0a4aabba3a17bb4bdb6a0d6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3002453, "upload_time": "2019-07-28T18:39:21", "url": "https://files.pythonhosted.org/packages/f6/e0/a0213d9f0484ba4d426080ee5fc793b0711b4adc5d8ad3876b1c61abc909/exif-0.8.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "64957914a2f958dbafa16a1f2edac4d7", "sha256": "108236768be2d68cbe5b41297dc67a3d5dcb2afcbbe1de84fc046f4e00f04ca0" }, "downloads": -1, "filename": "exif-0.8.1.tar.gz", "has_sig": false, "md5_digest": "64957914a2f958dbafa16a1f2edac4d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2957026, "upload_time": "2019-07-28T18:39:23", "url": "https://files.pythonhosted.org/packages/e5/7f/84a15237a5954145cf11e5c229f39e35921d5d1a45c933faadbc28bbb385/exif-0.8.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "604caa6dd0a4aabba3a17bb4bdb6a0d6", "sha256": "ae41ed65cd3d51dafb0e8adccc1280fc39d8c27bdffd0581417b1e89352794a7" }, "downloads": -1, "filename": "exif-0.8.1-py3-none-any.whl", "has_sig": false, "md5_digest": "604caa6dd0a4aabba3a17bb4bdb6a0d6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3002453, "upload_time": "2019-07-28T18:39:21", "url": "https://files.pythonhosted.org/packages/f6/e0/a0213d9f0484ba4d426080ee5fc793b0711b4adc5d8ad3876b1c61abc909/exif-0.8.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "64957914a2f958dbafa16a1f2edac4d7", "sha256": "108236768be2d68cbe5b41297dc67a3d5dcb2afcbbe1de84fc046f4e00f04ca0" }, "downloads": -1, "filename": "exif-0.8.1.tar.gz", "has_sig": false, "md5_digest": "64957914a2f958dbafa16a1f2edac4d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2957026, "upload_time": "2019-07-28T18:39:23", "url": "https://files.pythonhosted.org/packages/e5/7f/84a15237a5954145cf11e5c229f39e35921d5d1a45c933faadbc28bbb385/exif-0.8.1.tar.gz" } ] }