Get Image Properties using PHP

The data or Information that are associated with an image is called as metadata of the images. For example, image type, image width and height, attributes, created date, last modified date and etc.

These information are not obvious to the user on simply viewing the images. In this article, we have to see about how to get metadata of images using PHP script.

PHP provides various functions and DLL to extract image properties from an image. These functions are,

  1. imagesx() and imagesy()
  2. getimagesize()
  3. exif_read_data()

The corresponding dll to be enabled for using these functions are php_mbstring.dll, php_exif.dll. For that, we should search for these dll names among php.ini, and could be found as,

;extension=php_mbstring.dll
;extension=php_exif.dll

And then, enable these dll by removing semicolon(;) at the beginning of each line. And the order should be as shown above to enable mbstring before exif.

imagesx() and imagesy()

The imagesx() and imagesy() are used to extract the width and height of the images respectively. For that, it accept the resource type of data which will be returned on creating new images dynamically using PHP script. For example, PHP captcha code is created dynamically as images to ensure that the input of web application is entered by the human. If we want to check the width and height of the captcha we have created, then, imagesx() and imagesy() could be used appropriately.

php_get_image_properties

getimagesize()

This PHP method that returns array of image properties like width, height, image type, mime type and etc. This method will return limited amount of image data. But, there is no need to send resource data of the image as the argument of this function. Rather, we should specify the path of image file, which can be either relative or absolute path.

The following PHP program is used to extract the properties of an image. For that, we need to access HTML form data on submitting the selected image file.

First, create HTML content to select image file for which we need to extract properties. As we have seen, to upload files through HTML form, we need to specify enctype attribute to the form. But this attribute can be used, if the form method is post, as like as the following content.

<html>
<head>
<title>Getting Image Properties</title>
</head>
<body>
<form name="frmImage" action="" method="post" enctype="multipart/form-data">
<input type="file" name="myImage" /> 
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

After that, we need to access these form data from PHP script to be embedded on top of the above content. And the PHP script is,

<?php
if(isset($_POST["submit"])) {
if(is_array($_FILES)) {
$image_properties = getimagesize($_FILES['myImage']['tmp_name']);
print "<PRE>";
print_r($image_properties);
print "</PRE>";
}
}
?>

This script will be executed on submitting the form, and the image file is added with PHP global array, that is, $_FILES. After ensuring that the $_FILES is not empty, then, we should specify the name of the file to getimagesize() as shown above. Finally, image properties are returned as an array and displayed to the browser, in human readable format, by using PHP print statement inside pre tags.

Array
(
    [0] => 1024
    [1] => 768
    [2] => 2
    [3] => width="1024" height="768"
    [bits] => 8
    [channels] => 3
    [mime] => image/jpeg
)

exif_read_data()

Since getimagesize() functions will return limited set of properties, exif_read_data() is used to get more information further associated with images. So, added to the width, height information, it will return huge list of additional information such as image created date, last modified date, File name, size, orientation, resolution and etc.

This function will be used to extract properties of digital images in which Exif data is stored into its header. Exif is a standard format, that can be expanded as Exchangeable Image Format.

Image types are of 16 totally, which varies based on the devices used to capture images. Image types are returned as numbers that are associated with the available types of images like gif, png and etc. For example, if image type returned as 2 denotes that, it is JPEG image.

Not only the type of the images, but also the entire list of image properties returned by this function, will also be varied depends on devices.

In the above program, replace the line which invokes getimagesize() function, that is,

$image_properties = getimagesize($_FILES['myImage']['tmp_name']);

by the following line for getting image properties in exif format.

$image_properties = exif_read_data($_FILES['myImage']['tmp_name']);

And, let us experiment with different images capture by different devices, to see the differences between the resultant property array will be returned.

This PHP code tutorial was published on June 20, 2013.

↑ Back to Top