Get/set DPI with PHP GD/Imagick?

kaese picture kaese · Nov 2, 2010 · Viewed 10.1k times · Source

I'm building a Web application that will handle image files that will ultimately be printed, large format.

As part of this, I need to get (i.e. read) and set (i.e. change) the DPI of an image file.

Is this possible through PHP GD or PHP Imagick?

Thanks,

BK


Edit:

The DPI of a image can be accessed through iMagick's getImageResolution method:

public function getDPI() {

    $imgDPI = $this->image->getImageResolution();
    return $imgDPI;

}

and the DPI of an image can be set through iMagick's setImageResolution method:

public function setDPI($DPIX, $DPIY) {

    $this->image->setImageResolution($DPIX,$DPIY);

}

Answer

Vladimir Miroshnichenko picture Vladimir Miroshnichenko · Aug 21, 2014

in order to use "getImageResolution();" you must be sure that resolution in "PixelsPerInch"...sometimes it can be "PixelsPerCentimeter"

use following code to get image info:

$imagick = new Imagick($filename);
$data = $imagick->identifyimage();
var_dump($data);

result (when PixelsPerInch):

array(11) {
              ["imageName"]=> string(11) "/jpg300.jpg"
              ["format"]=> string(51) "JPEG (Joint Photographic Experts Group JFIF format)"
              ["units"]=> string(13) "PixelsPerInch"
              ["type"]=> string(9) "TrueColor"
              ["colorSpace"]=> string(3) "RGB"
              ["compression"] => string(4) "JPEG"
              ["fileSize"] => string(6) "8.72mb"
              ["mimetype"] => string(10) "image/jpeg"
              ["geometry"] => array(2) {
                        ["width"]  => int(11812)
                        ["height"] => int(7876)
              }
              ["resolution"]=> array(2) {
                    ["x"]=> float(300)
                    ["y"]=> float(300)
              }
              ["signature"]=> string(64) "7fc387ea465ec716e9fd6e233bb1d3740cb509f5667ed2a4df0199e6e664590e"
            }

or (when PixelsPerCentimeter):

    array(11) {
      ["imageName"]=> string(8) "/psm.jpg"
      ["format"]=> string(51) "JPEG (Joint Photographic Experts Group JFIF format)"
      ["units"]=> string(19) "PixelsPerCentimeter"
      ["type"]=> string(9) "TrueColor"
      ["colorSpace"]=> string(3) "RGB"
      ["compression"]=> string(4) "JPEG"
      ["fileSize"]=> string(7) "25.01mb"
      ["mimetype"]=> string(10) "image/jpeg"
      ["geometry"]=>
      array(2) {
        ["width"]=> int(11812)
        ["height"]=> int(7876)
      }
      ["resolution"]=>
      array(2) {
        ["x"]=> float(118.11)
        ["y"]=> float(118.11)
      }
      ["signature"]=> string(64) "b491e059624e79a4dee62d9cc7646019927b2222bfed9ac8dd4342185e648eaf"
    }