Fast way to get image dimensions (not filesize)
-
The
file
command prints the dimensions for several image formats (e.g. PNG, GIF, JPEG; recent versions also PPM, WEBP), and does only read the header. -
The
identify
command (from ImageMagick) prints lots of image information for a wide variety of images. It seems to restrain itself to reading the header portion (see comments). It also uses a unified format whichfile
sadly lacks. -
exiv2
gives you dimensions for many formats, including JPEG, TIFF, PNG, GIF, WEBP, even if no EXIF header present. It is unclear if it reads the whole data for that though. See the manpage of exiv2 for all supported image formats. -
head -n1
will give you the dimensions for PPM, PGM formats.
For formats popular on the web, both exiv2
and identify
will do the job.
Depending on the use-case you may need to write your own script that combines/parses outputs of several tools.
I not sure you have php installed, but this PHP function is pretty handy
php -r "print_r(getimagesize('http://www.google.com/images/logos/ps_logo2.png'));"
You can use ImageMagick's identify function. Here's how you do it in bash (Note $0 is the image's path):
width=$(identify -format "%w" "$0")> /dev/null
height=$(identify -format "%h" "$0")> /dev/null
And this also hides any potential error messages. Modern implementations of identify
only read the header, not the whole image, so it is fast. Not sure how it compares to other methods though.