PHP Conference Japan 2024

Imagick::contrastImage

(PECL imagick 2, PECL imagick 3)

Imagick::contrastImage變更影像的對比度

說明

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

增強影像中較淺和較深元素之間的強度差異。設定 sharpen 為 0 以外的值可以增加影像對比度,否則會降低對比度。

參數

sharpen

銳化值

回傳值

成功時回傳 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();
}

?>

新增筆記

使用者貢獻筆記 3 筆筆記

3
removespam dot roland at tannerritchie dot com
9 年前
xyking 和 quickshiftin 在他們的評論中都包含錯誤。xyking 的錯誤在於迴圈處理負數。quickshifting 錯誤地聲稱 0 *增加*對比度(事實並非如此 - 它會降低對比度)。

以下是一種(經過測試、可運作的)方法來遞增或遞減對比度
<?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);
}
}
}
}
?>
-4
xyking
14 年前
提示
<?php
$image
->contrastImage(1); // 增加對比度一次
$image->contrastImage(1); // 增加更多對比度
$image->contrastImage(1); // 增加更多對比度

$image->contrastImage(0); // 降低對比度一次
$image->contrastImage(0); // 降低更多對比度
$image->contrastImage(0); // 降低更多對比度

// 這可以做成一個函式,如下所示:
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);
}
}
}
?>
-5
quickshiftin at gmail dot com
10 年前
xyking 的評論是錯誤的,所以如果你讀到它,請小心。你傳遞值 0 來*增加*對比度。
To Top