{"id":880,"library":"imagesize","title":"imagesize","description":"The `imagesize` library is a pure Python module that efficiently extracts image dimensions, DPI, and other metadata (color depth, channel count, rotation) directly from image file headers, without needing to load the full image data. It supports a wide range of formats including BMP, PNG, JPEG, JPEG2000, GIF, TIFF, SVG, Netpbm, WebP, AVIF, HEIC, and HEIF. The current version is 2.0.0. It has a somewhat active release cadence, with recent updates in early March 2026.","status":"active","version":"2.0.0","language":"python","source_language":"en","source_url":"https://github.com/shibukawa/imagesize_py","tags":["image","size","dimensions","metadata","header","JPEG","PNG","GIF","TIFF","SVG","WebP","AVIF","HEIC","HEIF"],"install":[{"cmd":"pip install imagesize","lang":"bash","label":"Install imagesize"}],"dependencies":[],"imports":[{"symbol":"imagesize","correct":"import imagesize"},{"symbol":"get","correct":"import imagesize\nwidth, height = imagesize.get('image.png')"},{"symbol":"getDPI","correct":"import imagesize\nxdpi, ydpi = imagesize.getDPI('image.png')"},{"symbol":"get_info","correct":"import imagesize\ninfo = imagesize.get_info('image.png')"}],"quickstart":{"code":"import imagesize\nimport os\n\n# Create a dummy image file for demonstration\nwith open('test_image.png', 'wb') as f:\n    f.write(b'\\x89PNG\\r\\n\\x1a\\n\\x00\\x00\\x00\\rIHDR\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x01\\x08\\x06\\x00\\x00\\x00\\x1f\\x15\\xc4\\x89\\x00\\x00\\x00\\x0cIDATx\\xda\\xed\\xc1\\x01\\x01\\x00\\x00\\x00\\xc2\\xa0\\xf7Om\\x00\\x00\\x00\\x00IEND\\xaeB`\\x82')\n\n# Get basic image dimensions\nwidth, height = imagesize.get('test_image.png')\nprint(f\"Width: {width}, Height: {height}\")\n\n# Get DPI information (if available)\nxdpi, ydpi = imagesize.getDPI('test_image.png')\nprint(f\"X-DPI: {xdpi}, Y-DPI: {ydpi}\")\n\n# Get comprehensive image information\ninfo = imagesize.get_info('test_image.png')\nprint(f\"Image Info: Width={info.width}, Height={info.height}, Rotation={info.rotation}, X-DPI={info.xdpi}, Y-DPI={info.ydpi}, Colors={info.colors}, Channels={info.channels}\")\n\n# Clean up the dummy file\nos.remove('test_image.png')","lang":"python","description":"This quickstart demonstrates how to use `imagesize.get()`, `imagesize.getDPI()`, and `imagesize.get_info()` to retrieve dimensions, DPI, and other metadata from an image file. It includes creating a minimal dummy PNG file for a runnable example."},"warnings":[{"fix":"Update error handling logic to check for `(-1, -1)` as a return value from `imagesize.get()` and `imagesize.getDPI()` instead of catching exceptions.","message":"In version 2.0, `imagesize.get()` and `imagesize.getDPI()` no longer raise an exception on parsing failures. Instead, they now return `(-1, -1)`. Code that relied on exceptions for error handling will need to be updated to explicitly check for these return values.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"If the raw, unrotated dimensions are needed, call `imagesize.get(filepath, exif_rotation=False)`.","message":"When using `imagesize.get()`, EXIF orientation metadata is applied by default for rotated JPEG/TIFF images, meaning the returned width and height reflect the visually oriented image. If you need the raw stored size, you must explicitly pass `exif_rotation=False`.","severity":"gotcha","affected_versions":">=2.0.0"},{"fix":"Consider adding additional image integrity checks if your application requires highly reliable image data beyond just header parsing.","message":"The library primarily reads image *headers*. While it's generally robust, some severely corrupted images might still report dimensions if their headers are partially intact, even if the image data itself is unusable.","severity":"gotcha","affected_versions":"All"},{"fix":"Ensure SVG assets are defined with explicit pixel dimensions or a `viewBox` for reliable parsing with `imagesize`.","message":"For SVG images, `imagesize` only supports pixel dimensions and `viewBox` attributes. Percentage values for dimensions are not supported.","severity":"gotcha","affected_versions":"All"},{"fix":"Update code that uses `imagesize.get_info()` to instead use `imagesize.get(filepath)` for dimensions or `imagesize.getDPI(filepath)` for DPI. The API has been refactored.","message":"The `imagesize.get_info()` function has been removed in version 2.0. Code that relied on this function will raise an AttributeError. Users should migrate to `imagesize.get()` for dimensions and `imagesize.getDPI()` for DPI information.","severity":"breaking","affected_versions":">=2.0.0"}],"env_vars":null,"last_verified":"2026-05-12T20:43:11.189Z","next_check":"2026-06-27T00:00:00.000Z","problems":[{"fix":"Install the library using pip: `pip install imagesize`","cause":"The `imagesize` library has not been installed in the Python environment or the environment is not correctly activated.","error":"ModuleNotFoundError: No module named 'imagesize'"},{"fix":"Use the updated function name: `width, height = imagesize.get('image.jpg')`","cause":"Users are attempting to call an old function name (`get_imagesize`) that was deprecated in version 1.0.0 and removed in newer versions, instead of the current `imagesize.get`.","error":"AttributeError: module 'imagesize' has no attribute 'get_imagesize'"},{"fix":"Verify that the file path is correct and the file exists at that location, using an absolute path or ensuring the relative path is accurate.","cause":"The specified image file path does not exist or is incorrect, preventing `imagesize` from opening the file.","error":"FileNotFoundError: [Errno 2] No such file or directory: 'non_existent_image.jpg'"},{"fix":"Ensure the file is a valid, supported image format (e.g., JPEG, PNG, GIF) and not corrupted. If the file is expected to be valid, verify its integrity or try opening it with an image viewer.","cause":"The provided file is either not a recognized image format, is corrupted, or its header information is malformed in a way that `imagesize` cannot parse.","error":"imagesize.UnidentifiedImageError: cannot identify image file <path/to/image.file>"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":null,"quickstart_tag":null,"pypi_latest":"2.0.0","cli_name":"","cli_version":null,"install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","installed_version":"1.5.0","pypi_latest":"2.0.0","is_stale":true,"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"imagesize","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.13,"mem_mb":7.6,"disk_size":"17.8M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"imagesize","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.14,"mem_mb":7.6,"disk_size":"17.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"imagesize","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.09,"mem_mb":7.6,"disk_size":"18M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"imagesize","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.09,"mem_mb":7.6,"disk_size":"18M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"imagesize","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.19,"mem_mb":8.1,"disk_size":"19.7M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"imagesize","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.21,"mem_mb":8.1,"disk_size":"19.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"imagesize","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.16,"mem_mb":8.1,"disk_size":"20M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"imagesize","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.15,"mem_mb":8.1,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"imagesize","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.15,"mem_mb":8.1,"disk_size":"11.6M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"imagesize","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.16,"mem_mb":8.1,"disk_size":"11.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"imagesize","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.15,"mem_mb":8.1,"disk_size":"12M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"imagesize","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.15,"mem_mb":8.1,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"imagesize","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.14,"mem_mb":8.1,"disk_size":"11.3M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"imagesize","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.15,"mem_mb":8.1,"disk_size":"11.2M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"imagesize","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.17,"mem_mb":8.1,"disk_size":"12M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"imagesize","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.14,"mem_mb":8.1,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"imagesize","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":3.7,"disk_size":"17.3M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"imagesize","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.05,"mem_mb":3.7,"disk_size":"17.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"imagesize","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.04,"mem_mb":3.7,"disk_size":"18M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"imagesize","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":3.7,"disk_size":"18M"}]},"quickstart_checks":{"last_tested":"2026-04-24","tag":null,"tag_description":null,"results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]}}