此方法使用 "convert -density {$x_resolution}x{$y_resolution}" 參數。但是請注意,Imagick::setResolution() 比 Imagick::setImageResolution() 更類似 "convert -density" 選項
很令人困惑的是,Imagick::setResolution() 和 Imagick::setImageResolution() 都以「設定影像解析度」來介紹。
在讀取點陣影像之前使用 Imagick::setResolution()。此方法不會影響影像。但是,此方法會告訴影像相對於影像固有解析度的大小!使用此方法,您可以影響讀取後影像的實際像素大小。例如,您的影像大小為 100x100 像素,固有解析度為 72。將解析度設定為 144 並讀取此影像會產生新的影像大小 200x200 像素。
<?php
$im = new Imagick();
$im->setResolution(144,144);
$im->readImage("test.eps");
$im->setImageFormat("png");
header("Content-Type: image/png");
echo $im;
?>
使用 Imagick::setImageResolution() 來變更已讀取影像的解析度。此方法實際上不會變更影像的大小,但會影響取決於給定影像解析度的方法,例如 Imagick::resampleImage()。例如,您的影像大小為 100x100 像素,解析度為 72。將 ImageResolution 設定為 144 不會執行任何操作,除非您在之後相對於您設定的 ImageResolution 重新取樣影像!
<?php
$im = new Imagick();
$im->readImage("test.eps");
$im->setImageResolution(144,144);
$im->resampleImage (288,288,imagick::FILTER_UNDEFINED,1);
$im->setImageFormat("png");
header("Content-Type: image/png");
echo $im;
?>
實際上與下列程式碼的作用相同
<?php
$im = new Imagick();
$im->readImage("test.eps");
$im->setImageResolution(72,72);
$im->resampleImage (144,144,imagick::FILTER_UNDEFINED,1);
$im->setImageFormat("png");
header("Content-Type: image/png");
echo $im;
?>