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() 比 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;
?>
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