getimagesize
(PHP 4, PHP 5, PHP 7)
getimagesize — Get the size of an image
Description
$filename
[, array &$imageinfo
] )
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 imageinfo
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: 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.
Note: The information about icons are retrieved from the icon with the highest bitrate.
Note: 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).
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.
-
imageinfo
-
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.
Note:
The
imageinfo
only supports JFIF files.
Return Values
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.
Note:
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:
Example #1 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.
Errors/Exceptions
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
.
Changelog
Version | Description |
---|---|
7.1.0 | Added WebP support. |
5.3.0 | Added icon support. |
5.2.3 |
Read errors generated by this function downgraded to
E_NOTICE from E_WARNING .
|
4.3.2 | Support for JPC, JP2, JPX, JB2, XBM, and WBMP became available. |
4.3.2 |
JPEG 2000 support was added for the imageinfo
parameter.
|
4.3.0 | bits and channels are present for other image types, too. |
4.3.0 | Support for SWC and IFF was added. |
4.2.0 | Support for TIFF was added. |
4.0.6 | Support for BMP and PSD was added. |
Examples
Example #2 getimagesize() example
<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";
?>
Example #3 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");
?>
Example #4 getimagesize() returning IPTC
<?php
$size = getimagesize("testimg.jpg", $info);
if (isset($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
var_dump($iptc);
}
?>
See Also
- image_type_to_mime_type() - Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
- exif_imagetype() - Determine the type of an image
- exif_read_data() - Reads the EXIF headers from an image file
- exif_thumbnail() - Retrieve the embedded thumbnail of an image
- imagesx() - Get image width
- imagesy() - Get image height
Version en cache
23/12/2024 04:58:29 Cette version de la page est en cache (à la date du 23/12/2024 04:58:29) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-getimagesize.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.