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);
}
}
}
}
?>Imagick::contrastImage
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Imagick::contrastImage
Референца за `imagick.contrastimage.php` со подобрена типографија и навигација.
Imagick::contrastImage
(PECL imagick 2, PECL imagick 3)
Imagick::contrastImage — Променете го контрастот на сликата
= NULL
Ја подобрува разликата во интензитетот помеѓу посветлите и потемните елементи на сликата. Поставете заострување на вредност различна од 0 за да го зголемите контрастот на сликата, инаку контрастот се намалува.
Параметри
sharpen-
Вредноста на заострување
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true на успешен исход.
Errors/Exceptions
Фрла ImagickException при грешка.
Примери
Пример #1 (PECL imagick 2, PECL imagick 3)
<?php
function contrastImage($imagePath, $contrastType) {
$imagick = new \Imagick(realpath($imagePath));
if ($contrastType != 2) {
$imagick->contrastImage($contrastType);
}
header("Content-Type: image/jpg");
echo $imagick->getImageBlob();
}
?>Белешки од корисници 3 белешки
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);
}
}
}
?>xyking's comment is wrong so be careful if you read it. You pass a value of 0 to *increase* the contrast.