此方法使用 "convert -density {$x_resolution}x{$y_resolution}" 参数。但是要注意,Imagick::setResolution() 更类似于 "convert -density" 选项,而不是 Imagick::setImageResolution()
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;
?>