Imagick::contrastImage

(PECL imagick 2.0.0)

Imagick::contrastImageChange the contrast of the image

Beschreibung

bool Imagick::contrastImage ( bool $sharpen )

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.

Parameter-Liste

sharpen

The sharpen value

R├╝ckgabewerte

Liefert TRUE bei Erfolg.

Fehler/Exceptions

Wirft ImagickException bei Fehlern.

add a note add a note

User Contributed Notes 3 notes

up
1
removespam dot roland at tannerritchie dot com
21 days 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
-1
quickshiftin at gmail dot com
3 months ago
xyking's comment is wrong so be careful if you read it. You pass a value of 0 to *increase* the contrast.
up
-1
xyking
4 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);
            }
        }
    }
?>
To Top