Get DPI value of an image using PHP

February 19, 2008 | PHP

This is a simple function I wrote to get a DPI (dot per inch) value from an image using PHP only, without the need of ImageMagick nor GD library. The script was inspired from denisb post (the third post). At the forum, he described how to get the DPI value stored within the file.

< ?php
function get_dpi($filename){

    // open the file and read first 20 bytes.
    $a = fopen($filename,'r');
    $string = fread($a,20);
    fclose($a);

    // get the value of byte 14th up to 18th
    $data = bin2hex(substr($string,14,4));
    $x = substr($data,0,4);
    $y = substr($data,4,4);
    return array(hexdec($x),hexdec($y));

}

// output the result:
print_r(get_dpi2('filename.jpg'));
?>

I have tried this function to get DPI value of an image that I generated using Photoshop and worked as expected but failed to get DPI value from an image from any digital camera. It returned weird value instead.

Any idea why this function failed to retrieve DPI value from image that generated by digital camera? Please share your opinion.

4 comments

This post has 4 comments, amazing!

  1. tom 08/04/2008 at 11:12

    hi,
    this is an excellent little script that i found from the forum you mention! for some reason though i am getting the values 100, 100 returned from both a 72dpi file and a 300 dpi file…?
    Would you know why this is at all? I have resized both images in photoshop and saved out at the DPI’s mentioned.

    Any help would be greatly appreciated!

    Thanks,

    Tom

  2. moe 10/04/2008 at 09:32

    hi,
    i know this is way offfff topic, but you think you know how to get a Snap shot of a website in different sizes? if so, could you post it on as a blog or maybe give some ideas and point us to few tutorials that maybe helpful?

    thanks a bunch!

  3. PHP ile resim dosyas?n?n DPI bilgisini alal?m – Günlük Haftal?k Ayl?k 15/05/2008 at 20:34

    [...] Kaynak: Get DPI value of an image using PHP [...]

  4. john 23/07/2008 at 08:40

    Man, this is a great function that works really well. However, it seems it can’t read DPI information of a JPEG created on a MAC. I guess encoding methods differ. Do you know where the DPI information is located on a MAC-created JPEG?

 

Leave a comment

Allowed tags are: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>