PHP ImageMagick - 对比度与亮度



借助对比度,可以表达图像中不同的情绪。“对比度”指的是颜色或灰度差异的程度。与低对比度图像相比,高对比度图像通常显示出更大程度的颜色或灰度变化。本章将学习如何更改和调整对比度和亮度。

更改对比度

在本节中,您将学习更改对比度的过程。这可以使用 ImageMagick 提供的一种名为‘contrastImage()’ 的方法来完成。它有助于增强图像中较亮和较暗元素之间的差异。

语法

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

此方法包含一个参数“sharpen”。它是一个布尔值,指定锐化值。此方法将图像作为输入,并将更改对比度后的图像作为输出。

示例

在下面的示例中,创建了一个新的 Imagick 对象并获取输入图像。然后,将contrastImage() 函数应用于该图像。最后,以“contrastImage.png”格式获得输出图像。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.jpeg");
   $image->contrastImage(true);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/contrastImage.png");
?>

假设以下是程序中的输入图像 (image.jpeg) −

Changing the Contrast

输出

Changing the Contrast

更改亮度

ImageMagick 提供了一种名为‘brightnessContrastImage()’ 的方法,该方法可以更改图像的亮度和对比度。它将亮度和对比度参数转换为斜率和截距,并调用多项式函数将其应用于图像。

语法

Public Imagick::brightnessContrastImage(float $brightness, float $contrast, int $channel=Imagick::CHANNEL_DEFAULT):bool

此方法包含三个参数:亮度、对比度和通道。“亮度” 用于存储亮度值,“对比度”用于存储图像对比度值,“通道”用于存储通道值。获得的输出是添加了亮度和对比度的图像。

示例

在下面的示例中,创建了一个新的 Imagick 对象并获取输入图像。然后,将‘brightnessContrastImage()’ 函数(参数为 brightness=15, contrast=20)应用于该图像。最后,以“brightnessContrastImage.png”格式获得输出图像。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image5.jpeg");
   $image->brightnessContrastImage(15,50);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/brightnessContrastImage.png");
?>

假设以下是程序中的输入图像 (image5.jpeg) −

Changing the Brightness

输出

Changing the Brightness

增强对比度

增强是提高图像质量的过程。为了增强对比度,ImageMagick 提供了一种名为‘contrastStretchImage()’ 的方法,该方法通过调整像素颜色以跨越所有可用颜色范围来增强彩色图像的对比度。

语法

public Imagick::contrastStretchImage(float $black_point, float $white_point, int $channel = Imagick::CHANNEL_DEFAULT): bool

此方法具有三个参数:black_point、white_point 和 channel。“black_point”指定黑点,“white_point”指定白点,“channel”提供任何对您的通道模式有效的通道常量。

示例

在下面的示例中,创建了一个新的 Imagick 对象并获取输入图像。然后,将‘contrastStretchImage()’ 函数(参数为 black_point=1000, white_point=5000)应用于该图像。最后,以“contrastStretchImage.png”格式获得输出图像。

此方法具有三个参数:black_point、white_point 和 channel。“black_point”指定黑点,“white_point”指定白点,“channel”提供任何对您的通道模式有效的通道常量。

<?php
   $image=new Imagick($_SERVER['DOCUMENT_ROOT']."/test/image.jpeg");
   $image->contrastStretchImage(1000, 5000);
   $image->writeImage($_SERVER['DOCUMENT_ROOT']."/test/contrastStretchImage.png");
?>

假设以下是程序中的输入图像 (image.jpeg) −

Enhance Contrast

输出

Enhance Contrast
广告
© . All rights reserved.