PHP Conference Japan 2024

Imagick::contrastImage

(PECL imagick 2, PECL imagick 3)

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

描述

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

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

参数

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 个注释

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);
}
}
}
}
?>
-4
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);
}
}
}
?>
-5
quickshiftin at gmail dot com
10 年前
xyking 的评论是错误的,所以如果你阅读它,请小心。你传递一个值为 0 的值来*增加*对比度。
To Top