Longhorn PHP 2023 - Call for Papers

Imagick::contrastImage

(PECL imagick 2, PECL imagick 3)

Imagick::contrastImageChange the contrast of the image

Descrição

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

Enhances the intensity differences between the lighter and darker elements of the image. Set sharpen to a value other than 0 to increase the image contrast otherwise the contrast is reduced.

Parâmetros

sharpen

The sharpen value

Valor Retornado

Retorna true em caso de sucesso.

Erros

Lança uma exceção ImagickException em caso de erro.

Exemplos

Exemplo #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();
}

?>

add a note

User Contributed Notes 3 notes

up
3
removespam dot roland at tannerritchie dot com
8 years ago
Both xyking and quickshiftin include errors in their comments. xyking's error is in looping through negative numbers. quickshifting is incorrect in stating that 0 *increases* contrast (it does not - it decreases it).

Here is a (tested, working) method to increment or decrement contrast:
<?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);
                }
            }
     }
}
?>
up
-4
xyking
13 years ago
Tip:
<?php
$image
->contrastImage(1); //Increase contrast once
$image->contrastImage(1); //Increase contrast more
$image->contrastImage(1); //Increase contrast even more

$image->contrastImage(0); //Decrease contrast once
$image->contrastImage(0); //Decrease contrast more
$image->contrastImage(0); //Decrease contrast even more

//This could be made into a function like this:
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);
            }
        }
    }
?>
up
-5
quickshiftin at gmail dot com
8 years ago
xyking's comment is wrong so be careful if you read it. You pass a value of 0 to *increase* the contrast.
To Top