{"library":"piexif","title":"Piexif","description":"Piexif is a pure Python library designed to simplify EXIF data manipulation. It enables reading, writing, and removing EXIF tags from JPEG, WebP, and TIFF image files without relying on external image processing libraries. The library's current version is 1.1.3, and releases are made as needed to address issues or add features.","language":"python","status":"active","last_verified":"Thu May 14","install":{"commands":["pip install piexif"],"cli":null},"imports":["import piexif","import piexif\n# Access constants like:\npiexif.ImageIFD.Make\npiexif.TAGS['Exif'][piexif.ExifIFD.DateTimeOriginal]"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import piexif\nfrom PIL import Image\nimport os\n\n# Create a dummy JPEG file for demonstration\ndummy_image_path = \"dummy_image_with_exif.jpg\"\nnew_image_path = \"output_image_with_modified_exif.jpg\"\n\n# Create a simple image (requires Pillow)\nimg = Image.new('RGB', (60, 30), color = 'red')\nimg.save(dummy_image_path)\n\n# 1. Load EXIF data\ntry:\n    # Create a minimal EXIF dictionary\n    zeroth_ifd = {\n        piexif.ImageIFD.Make: \"PiexifTest\",\n        piexif.ImageIFD.XResolution: (72, 1),\n        piexif.ImageIFD.YResolution: (72, 1)\n    }\n    exif_ifd = {\n        piexif.ExifIFD.DateTimeOriginal: \"2026:04:11 12:34:56\"\n    }\n    exif_dict_initial = {\"0th\": zeroth_ifd, \"Exif\": exif_ifd, \"GPS\": {}, \"Interop\": {}, \"1st\": {}, \"thumbnail\": None}\n    exif_bytes_initial = piexif.dump(exif_dict_initial)\n\n    img.save(dummy_image_path, exif=exif_bytes_initial)\n\n    exif_dict = piexif.load(dummy_image_path)\n    print(\"Original Camera Make:\", exif_dict[\"0th\"][piexif.ImageIFD.Make])\n\n    # 2. Modify an EXIF tag\n    exif_dict[\"0th\"][piexif.ImageIFD.Make] = \"PiexifModified\"\n\n    # 3. Dump the modified EXIF data to bytes\n    exif_bytes = piexif.dump(exif_dict)\n\n    # 4. Insert the new EXIF data into an image (or save with Pillow)\n    img_to_modify = Image.open(dummy_image_path)\n    img_to_modify.save(new_image_path, exif=exif_bytes)\n\n    # 5. Verify the change\n    modified_exif_dict = piexif.load(new_image_path)\n    print(\"Modified Camera Make:\", modified_exif_dict[\"0th\"][piexif.ImageIFD.Make])\n\nfinally:\n    # Clean up dummy files\n    if os.path.exists(dummy_image_path):\n        os.remove(dummy_image_path)\n    if os.path.exists(new_image_path):\n        os.remove(new_image_path)\n","lang":"python","description":"This quickstart demonstrates how to load EXIF data from a JPEG image, modify a tag (e.g., the camera make), and then save the image with the updated EXIF information using piexif, often in conjunction with Pillow for image handling.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-14","installed_version":"1.1.3","pypi_latest":"1.1.3","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.6,"avg_import_s":0.01,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"piexif","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"17.9M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"piexif","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"17.9M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"piexif","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"18M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"piexif","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"18M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"piexif","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.02,"mem_mb":0.4,"disk_size":"19.8M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"piexif","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":0.4,"disk_size":"19.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"piexif","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.01,"mem_mb":0.6,"disk_size":"20M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"piexif","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.6,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"piexif","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"11.7M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"piexif","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":0.4,"disk_size":"11.7M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"piexif","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"12M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"piexif","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"piexif","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.6,"disk_size":"11.4M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"piexif","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.6,"disk_size":"11.3M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"piexif","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"12M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"piexif","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"piexif","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"17.4M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"piexif","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"17.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"piexif","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"18M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"piexif","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"18M"}]}}