getimagesize

Get the size of an image

&reftitle.description; ``array``false```getimagesize` `string` `filename` `array` `image_info`&null;

The `getimagesize` function will determine the size of any supported given image file and return the dimensions along with the file type and a `height/width` text string to be used inside a normal HTML `IMG` tag and the correspondent HTTP content type.

`getimagesize` can also return some more information in `image_info` parameter.

This function expects `filename` to be a valid image file. If a non-image file is supplied, it may be incorrectly detected as an image and the function will return successfully, but the array may contain nonsensical values.

Do not use `getimagesize` to check that a given file is a valid image. Use a purpose-built solution such as the Fileinfo extension instead.

Note that JPC and JP2 are capable of having components with different bit depths. In this case, the value for "bits" is the highest bit depth encountered. Also, JP2 files may contain `multiple JPEG 2000 codestreams`. In this case, `getimagesize` returns the values for the first codestream it encounters in the root of the file.

The information about icons are retrieved from the icon with the highest bitrate.

GIF images consist of one or more frames, where each frame may only occupy part of the image. The size of the image which is reported by `getimagesize` is the overall size (read from the logical screen descriptor).

&reftitle.parameters;

`filename`

- This parameter specifies the file you wish to retrieve information about. It can reference a local file or (configuration permitting) a remote file using one of the supported streams.

`image_info`

- This optional parameter allows you to extract some extended information from the image file. Currently, this will return the different JPG APP markers as an associative array. Some programs use these APP markers to embed text information in images. A very common one is to embed IPTC information in the APP13 marker. You can use the `iptcparse` function to parse the binary APP13 marker into something readable.

  The `image_info` only supports JFIF files.

&reftitle.returnvalues;

Returns an array with up to 7 elements. Not all image types will include the `channels` and `bits` elements.

Index 0 and 1 contains respectively the width and the height of the image.

Some formats may contain no image or may contain multiple images. In these cases, `getimagesize` might not be able to properly determine the image size. `getimagesize` will return zero for width and height in these cases.

Index 2 is one of the IMAGETYPE_XXX constants indicating the type of the image.

Index 3 is a text string with the correct `height="yyy" width="xxx"` string that can be used directly in an IMG tag.

`mime` is the correspondant MIME type of the image. This information can be used to deliver images with the correct HTTP `Content-type` header:

### `getimagesize` and MIME types

    <?php
    $size = getimagesize($filename);
    $fp = fopen($filename, "rb");
    if ($size && $fp) {
        header("Content-type: {$size['mime']}");
        fpassthru($fp);
        exit;
    } else {
        // error
    }
    ?>

`channels` will be 3 for RGB pictures and 4 for CMYK pictures.

`bits` is the number of bits for each color.

For some image types, the presence of `channels` and `bits` values can be a bit confusing. As an example, GIF always uses 3 channels per pixel, but the number of bits per pixel cannot be calculated for an animated GIF with a global color table.

On failure, &false; is returned.

&reftitle.errors;

If accessing the `filename` image is impossible `getimagesize` will generate an error of level `E_WARNING`. On read error, `getimagesize` will generate an error of level `E_NOTICE`.

&reftitle.changelog;

&Version; | &Description;
8.2.0 | Now returns the actual image dimensions, bits and channels of AVIF images; previously, the dimensions were reported as `0x0`, and bits and channels were not reported at all.
7.1.0 | Added WebP support.

&reftitle.examples;

### `getimagesize` example

    <?php
    list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
    echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";
    ?>

### getimagesize (URL)

    <?php
    $size = getimagesize("http://www.example.com/gifs/logo.gif");

    // if the file name has space in it, encode it properly
    $size = getimagesize("http://www.example.com/gifs/lo%20go.gif");

    ?>

### getimagesize() returning IPTC

    <?php
    $size = getimagesize("testimg.jpg", $info);
    if (isset($info["APP13"])) {
        $iptc = iptcparse($info["APP13"]);
        var_dump($iptc);
    }
    ?>

&reftitle.notes; ¬e.gd.notrequired;
&reftitle.seealso;

- `image_type_to_mime_type`
- `exif_imagetype`
- `exif_read_data`
- `exif_thumbnail`
- `imagesx`
- `imagesy`