Skip to main content

No project description provided

Project description

⚠️ This is a fork of scardine/image_size simply to create a distributable package on PyPI. Will be rendered unnecessary if image_size/issues/13 is addressed.

get_image_size

Look, Ma! No deps!

Get image width and height given a file path using minimal dependencies (no need for PIL, libjpeg, libpng, etc).

Why don’t you just use PIL?

PIL is huge and has lots of dependencies, perhaps an overkill if you want just the image dimensions. If you already have PIL installed, then sure, use it instead.

This was written in answer for the question “Get Image size WITHOUT loading image into memory” (using Python) in stackoverflow. The OP said:

@PauloScardine hey thanks Paulo, this is great! It’s always so nice to have code that can be easily deployed without bringing in dependencies, and this fits the bill! As you say, avoiding PIL is worth it for its own sake.

Usage

Right now only for PNG, JPEG, GIF, BMP and TIF. Very untested, fork and send PRs.

Python get_image_size.get_image_size usage:

import get_image_size
try:
    width, height = get_image_size.get_image_size('/path/to/image.ext')
except get_image_size.UnknownImageFormat:
    width, height = -1, -1

Python get_image_size.get_image_metadata usage:

import get_image_size
try:
    img = get_image_size.get_image_metadata('/path/to/image.ext')
    width, height = img.width, img.height
    print(img._asdict())
except get_image_size.UnknownImageFormat:
    width, height = -1, -1

Commandline get-image-size usage:

$ python -m get_image_size --help
$ get-image-size --help
Usage: get-image-size [-v|--verbose] [--json|--json-indent] <path0> [<pathN>]

Print metadata for the given image paths (without image library bindings).

Options:
  -h, --help     show this help message and exit
  --json
  --json-indent
  -v, --verbose
  -q, --quiet
  -t, --test

$ get-image-size ./lookmanodeps.png
251 208     22228   PNG     ./lookmanodeps.png

$ get-image-size --json-indent ./lookmanodeps.png
{
  "path": "./lookmanodeps.png",
  "type": "PNG",
  "file_size": 22228,
  "width": 251,
  "height": 208
}

Updates

Over the time people sent updates for “.ico”, “.bmp” and other improvements. It is interesting to have all those algorithms in the same place so people can reimplement them using other languages, so thanks for all the pull requests (you can see the list of contributions in the history).

I added support for BMP file types, respecting different types of DIB headers. Should work on all current bitmap types, tested for old OS/2 and BITMAPCOREHEADER files, too. You might try it and consider it for merging if you find it useful. No longer under 100 LOC though, sorry ;)

License

MIT License

Thanks

Thanks everyone who inspired this, contributed with code or sent bug reports. You know who you are, THANK YOU!

HISTORY

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opsdroid_get_image_size-0.2.0.tar.gz (6.7 kB view details)

Uploaded Source

File details

Details for the file opsdroid_get_image_size-0.2.0.tar.gz.

File metadata

  • Download URL: opsdroid_get_image_size-0.2.0.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/2.7.14

File hashes

Hashes for opsdroid_get_image_size-0.2.0.tar.gz
Algorithm Hash digest
SHA256 53b55f122346e959a6ba8316be3606c852e5bbe147d1932b4c42ab8cdf027972
MD5 f87aa9723e01bc25e5915e466fe16b82
BLAKE2b-256 729f664df7464feb2b2ba9a4c31678c2d143b83c6e6d2b4c64b4704acae154f2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page