Imagick::contrastImage

(PECL imagick 2, PECL imagick 3)

Imagick::contrastImageChange the contrast of the image

Опис

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.

Параметри

sharpen

The sharpen value

Значення, що повертаються

Повертає true в разі успіху.

Помилки/виключення

Кидає ImagickException в разі помилки.

Приклади

Приклад #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
10 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
-3
xyking
14 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
10 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