Imagick::contrastImage

(PECL imagick 2, PECL imagick 3)

Imagick::contrastImage更改图像的对比度

描述

public Imagick::contrastImage(bool $sharpen): bool

增强图像中较亮和较暗元素之间的强度差异。将 sharpen 设置为非 0 值以增加图像对比度,否则对比度将降低。

参数

sharpen

sharpen 值

返回值

成功时返回 true

错误/异常

错误时抛出 ImagickException。

示例

示例 #1 Imagick::contrastImage()

<?php
function contrastImage($imagePath, $contrastType) {
$imagick = new \Imagick(realpath($imagePath));
if (
$contrastType != 2) {
$imagick->contrastImage($contrastType);
}

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

?>

添加说明

用户贡献说明 3 个说明

removespam dot roland at tannerritchie dot com
9 年前
xyking 和 quickshiftin 的评论中都包含错误。xyking 的错误在于循环遍历负数。quickshifting 的错误在于声称 0 *增加* 对比度(它不会 - 它会降低)。

这是一个(经过测试,有效的)方法来增加或减少对比度
<?php
class Images {
public function
contrastImage($contrast, $imagePath){

$this->image = new Imagick();
$this->image->readImage($imagePath);

if (
$contrast > 0){
for (
$i = 1; $i < $contrast; $i++){
$this->image->contrastImage(1);
}
}else if (
$contrast <= 0) {

for (
$i = 0; $i > $contrast; $i--) {

$this->image->contrastImage(0);
}
}
}
}
?>
xyking
14 年前
提示
<?php
$image
->contrastImage(1); //增加对比度一次
$image->contrastImage(1); //进一步增加对比度
$image->contrastImage(1); //进一步增加对比度

$image->contrastImage(0); //减少对比度一次
$image->contrastImage(0); //进一步减少对比度
$image->contrastImage(0); //进一步减少对比度

//这可以改写为这样的函数:
public function contrast($level) {
$level = (int)$level;
if (
$level < -10) {
$level = -10;
} else if (
$level > 10) {
$level = 10;
}
if (
$level > 0) {
for (
$i = 0; $i < $level; $i++) {
$this->image->contrastImage(1);
}
} else if (
$level < 0) {
for (
$i = $level; $i > 0; $i--) {
$this->image->contrastImage(0);
}
}
}
?>
quickshiftin at gmail dot com
9 年前
xyking 的评论是错误的,因此如果你阅读它要小心。你传递一个值为 0 的值来*增加*对比度。
To Top