Imagick::setOption

(PECL imagick 2, PECL imagick 3)

Imagick::setOption设置选项

说明

public Imagick::setOption(string $key, string $value): bool

将一个或多个选项与魔杖关联。

参数

key

value

返回值

成功时返回 true

示例

示例 #1 尝试达到 '$extent' 大小Imagick::setOption()

<?php
function renderJPG($extent) {
$imagePath = $this->control->getImagePath();
$imagick = new \Imagick(realpath($imagePath));
$imagick->setImageFormat('jpg');
$imagick->setOption('jpeg:extent', $extent);
header("Content-Type: image/jpg");
echo
$imagick->getImageBlob();
}

?>

示例 #2 Imagick::setOption()

<?php
function renderPNG($imagePath, $format) {

$imagick = new \Imagick(realpath($imagePath));
$imagick->setImageFormat('png');
$imagick->setOption('png:format', $format);
header("Content-Type: image/png");
echo
$imagick->getImageBlob();
}

// 另存为 64 位 PNG.
renderPNG($imagePath, 'png64');

?>

示例 #3 Imagick::setOption()

<?php
function renderCustomBitDepthPNG() {
$imagePath = $this->control->getImagePath();
$imagick = new \Imagick(realpath($imagePath));
$imagick->setImageFormat('png');

$imagick->setOption('png:bit-depth', '16');
$imagick->setOption('png:color-type', 6);
header("Content-Type: image/png");
$crash = true;
if (
$crash) {
echo
$imagick->getImageBlob();
}
else {
$tempFilename = tempnam('./', 'imagick');
$imagick->writeimage(realpath($tempFilename));
echo
file_get_contents($tempFilename);
}
}

?>

添加说明

用户贡献说明 4 条说明

kicha at kreker dot org
8 年前
ImageMagick 官方网站上的选项列表(带键 => 值)
https://imagemagick.org.cn/script/command-line-options.php#define
alexandre at gaigalas dot net
13 年前
如果您想从 PDF 文件中提取预览,使用 CropBox 而不是整个文档,setOption() 是正确的方法

<?php
$handler
= new Imagick();
$handler->setOption('pdf:use-cropbox', 'true');
$handler->readImage($imageFileName);
$handler->thumbnailImage(200, 200, true);
$handler->setImageFormat('jpeg');
$handler->writeImage($destThumbFileName);
?>

它等效于 convert 命令行工具的 -define pdf:use-cropbox=true。 pdf:use-trimbox 也可用。

请注意,在我的环境中,setOption 只有在我调用 readImage 方法之前调用它时才有效,这意味着您不能直接将文件名传递给 Imagick 构造函数。
SkepticaLee
4 年前
实际上,如果 setOption() 失败,可以使用 setImageArtifact(),例如

$im->setImageartifact ("distort:viewport", "960x540+0-151");

或者可能 setOption() 已被弃用。
dodginess at yahoo dot com
3 个月前
似乎不可能使用 setOption() 方法禁用抗锯齿,正如预期的那样,并且像这样调用 setOption() 方法没有任何作用

$imagick->setOption('antialias', FALSE);

https://github.com/Imagick/imagick/issues/83 中所述,正确的方法是使用 setAntiAlias() 方法,该方法目前在 PHP 手册中没有记录。例如,要禁用图像的反锯齿,可以执行以下操作

$imagick->setAntiAlias(FALSE);
To Top