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.