PHP Conference Japan 2024

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 个注释

27
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;
?>
3
carter dot sharon at gmail dot com
14 年前
如果您正在读取或创建新图像并想要设置分辨率,则需要设置图像单位。未定义的图像单位将导致 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());

?>

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