Imagick::setResolution

(PECL imagick 2, PECL imagick 3)

Imagick::setResolution设置图像分辨率

说明

public Imagick::setResolution(float $x_resolution, float $y_resolution): bool

设置图像分辨率。

参数

x_resolution

水平分辨率。

y_resolution

垂直分辨率。

返回值

成功时返回 true

备注

Imagick::setResolution() 必须在加载或创建图像之前调用。

参见

添加注释

用户贡献注释 2 个注释

sualk at lednew dot de
14 年前
此方法使用 "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;
?>
carter dot sharon at gmail dot com
13 年前
如果您要读取或创建新的图像并想要设置分辨率,您需要设置图像单位。未定义的图像单位会导致 imagick 使用默认分辨率 (72x72)。

<?php
$img
= new Imagick();

$img->setResolution(300,300);
$img->newimage(100,100,'none');
$img->setImageFormat('png');
// imagick::RESOLUTION_UNDEFINED imagick::RESOLUTION_PIXELSPERINCH imagick::RESOLUTION_PIXELSPERCENTIMETER

$img->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);

print_r($img->identifyImage());

?>

输出
Array (
[resolution] => Array ( [x] => 300 [y] => 300 )
[units] => PixelsPerInch
)
To Top