Imagick::setCompressionQuality

(PECL imagick 2, PECL imagick 3)

Imagick::setCompressionQuality设置对象的默认压缩质量

描述

public Imagick::setCompressionQuality(int $quality): bool

设置对象的默认压缩质量。

注意

此方法仅适用于新图像,例如通过 Imagick::newPseudoImage 创建的图像。对于现有图像,您应该使用 Imagick::setImageCompressionQuality().

参数

quality

一个 int,介于 1 到 100 之间,1 表示高压缩,100 表示低压缩。

返回值

如果成功,则返回 true

示例

示例 #1 Imagick::setCompressionQuality()

<?php
function setCompressionQuality($imagePath, $quality) {

$backgroundImagick = new \Imagick(realpath($imagePath));
$imagick = new \Imagick();
$imagick->setCompressionQuality($quality);
$imagick->newPseudoImage(
$backgroundImagick->getImageWidth(),
$backgroundImagick->getImageHeight(),
'canvas:white'
);

$imagick->compositeImage(
$backgroundImagick,
\Imagick::COMPOSITE_ATOP,
0,
0
);

$imagick->setFormat("jpg");
header("Content-Type: image/jpg");
echo
$imagick->getImageBlob();
}

?>

添加注释

用户贡献的注释 4 个注释

31
deeps chennai
14 年前
对于那些无法使用此功能的人的注释。

使用 PHP 5.1.6,以下代码有效

<?php
$img
->setCompression(Imagick::COMPRESSION_JPEG);
$img->setCompressionQuality(80);
?>

但是,在更高版本的 PHP(我在 PHP 5.2.10 上尝试过)中,代码无效(并且 Imagick 也没有抛出异常或警告)。

有效的代码是

<?php
$img
->setImageCompression(Imagick::COMPRESSION_JPEG);
$img->setImageCompressionQuality(80);
?>

并且此代码向后兼容(在 PHP 5.1.6 和 5.2.10 上都有效)
5
charles dot hall at sas dot com
14 年前
我必须插入对 "stripImage()" 的调用才能真正看到文件大小缩减。

<?php
$img
= new Imagick();
$img->readImage($src);
$img->setImageCompression(imagick::COMPRESSION_JPEG);
$img->setImageCompressionQuality(90);
$img->stripImage();
$img->writeImage($dest);
?>
-4
nVaux.com
16 年前
Sebastian 的示例效果很好,只有一个小的拼写错误,否则会出错。

<?php
$img
->setCompression(Imagick::COMPRESSION_JPEG);
$img->setCompressionQuality(80);
?>

我使用了 Sebastian 的示例,并做了一个压缩目录中所有图像的示例

<?php
$images
= new Imagick(glob('images/*.jpg'));

foreach(
$images as $image)
{
// 压缩方法,参见 "常量" 页面了解 Imagick
$image->setCompression(imagick::COMPRESSION_JPEG);
// 介于 1 到 100 之间的值,1 表示高压缩,100 表示低压缩
$image->setCompressionQuality(80);
$image->writeImage();
}

?>
-10
sebastian dot moser at gmail dot com
16 年前
使用此示例查看图像压缩是如何工作的

<?php
// 加载图像
$img = new Imagick("test.jpg");

// 压缩方法,参见 "常量" 页面了解 Imagick
$img->setComression(Imagick::COMPRESSION_JPEG);
// 介于 1 到 100 之间的值,1 表示高压缩,100 表示低压缩
$img->setComressionQuality(80);

// 设置内容类型
header("Content-type: image/jpeg");
// 写入图像
echo $img->getImageBlob();
?>
To Top