文字

Imagick::contrastImage

(PECL imagick 2.0.0)

Imagick::contrastImageChange the contrast of the image

说明

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.

参数

sharpen

The sharpen value

返回值

成功时返回 TRUE

错误/异常

错误时抛出 ImagickException。

范例

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

?>

用户评论:

[#1] removespam dot roland at tannerritchie dot com [2015-02-12 19:14:07]

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);
                }
            }
     }
}
?>

[#2] quickshiftin at gmail dot com [2014-11-07 21:24:44]

xyking's comment is wrong so be careful if you read it. You pass a value of 0 to *increase* the contrast.

[#3] xyking [2010-04-16 08:14:25]

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);
            }
        }
    }
?>

上一篇: 下一篇: