PHP ImageMagick - 对比度和亮度


借助对比,可以在图像中传达不同类型的情绪。术语“对比度”是指颜色或灰度差异的程度。具有较高对比度的图像通常比较低对比度的图像显示更大程度的颜色或灰度变化。在本章中,您将学习如何更改和调整对比度和亮度。

改变对比度

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

句法

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

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

例子

在下面的示例中,创建了新的 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) -

改变对比度

输出

改变对比度

改变亮度

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

句法

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

该方法包含3个参数,分别是亮度、对比度和通道。“Brightness”用于存储亮度值,“Contrast”用于存储图像对比度值,“channel”用于存储通道值。获得的输出是增加了亮度和对比度的图像。

例子

在下面的示例中,创建了一个新的 imagick 对象并获取输入图像。然后,将带有参数(亮度=15,对比度=20)的“brightnessContrastImage()”函数应用于该图像。最后,以“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) -

改变亮度

输出

改变亮度

增强对比度

增强是提高图像质量的过程。为了增强对比度,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 对象并获取输入图像。然后,将带有参数(black_point=1000,white_point=5000)的“contrastStretchImage()”函数应用于该图像。最后,以“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) -

增强对比度

输出

增强对比度