ImageMagick 官方网站上的选项列表(带键 => 值)
https://imagemagick.org.cn/script/command-line-options.php#define
(PECL imagick 2, PECL imagick 3)
Imagick::setOption — 设置选项
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);
}
}
?>
ImageMagick 官方网站上的选项列表(带键 => 值)
https://imagemagick.org.cn/script/command-line-options.php#define
如果您想从 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 构造函数。
实际上,如果 setOption() 失败,可以使用 setImageArtifact(),例如
$im->setImageartifact ("distort:viewport", "960x540+0-151");
或者可能 setOption() 已被弃用。
似乎不可能使用 setOption() 方法禁用抗锯齿,正如预期的那样,并且像这样调用 setOption() 方法没有任何作用
$imagick->setOption('antialias', FALSE);
如 https://github.com/Imagick/imagick/issues/83 中所述,正确的方法是使用 setAntiAlias() 方法,该方法目前在 PHP 手册中没有记录。例如,要禁用图像的反锯齿,可以执行以下操作
$imagick->setAntiAlias(FALSE);