PHP圖形處理如何進(jìn)行圖像濾鏡

PHP
小樊
82
2024-10-30 15:55:27

在PHP中,可以使用GD庫(kù)或Imagick擴(kuò)展進(jìn)行圖像處理。這里我將向您展示如何使用GD庫(kù)實(shí)現(xiàn)圖像濾鏡。

以下是一個(gè)簡(jiǎn)單的示例,展示了如何使用GD庫(kù)應(yīng)用圖像濾鏡(灰度濾鏡):

<?php
// 加載圖像
$image = imagecreatefromjpeg('input.jpg');

// 應(yīng)用灰度濾鏡
$gray_image = imagecreatefromjpeg('input.jpg');
for ($x = 0; $x < imagesx($gray_image); $x++) {
    for ($y = 0; $y < imagesy($gray_image); $y++) {
        $rgb = imagecolorat($gray_image, $x, $y);
        $r = ($rgb >> 16) & 0xFF;
        $g = ($rgb >> 8) & 0xFF;
        $b = $rgb & 0xFF;
        $gray = 0.299 * $r + 0.587 * $g + 0.114 * $b;
        imagesetpixel($gray_image, $x, $y, $gray);
    }
}

// 保存濾鏡后的圖像
imagejpeg($gray_image, 'output.jpg');

// 銷毀圖像資源
imagedestroy($image);
imagedestroy($gray_image);
?>

這個(gè)示例中,我們首先加載了一個(gè)名為input.jpg的圖像,然后創(chuàng)建了一個(gè)新的灰度濾鏡圖像。接下來(lái),我們遍歷原始圖像的每個(gè)像素,將其轉(zhuǎn)換為灰度值,并將灰度值設(shè)置為新圖像的相應(yīng)像素。最后,我們將濾鏡后的圖像保存為output.jpg。

除了灰度濾鏡之外,您還可以使用其他濾鏡,例如模糊、銳化等。以下是一個(gè)應(yīng)用模糊濾鏡的示例:

<?php
// 加載圖像
$image = imagecreatefromjpeg('input.jpg');

// 應(yīng)用模糊濾鏡
$blur_image = imagecreatefromjpeg('input.jpg');
for ($x = 0; $x < imagesx($blur_image); $x++) {
    for ($y = 0; $y < imagesy($blur_image); $y++) {
        $sum = 0;
        $count = 0;
        for ($i = -1; $i <= 1; $i++) {
            for ($j = -1; $j <= 1; $j++) {
                $xi = $x + $i;
                $yj = $y + $j;
                if ($xi >= 0 && $xi < imagesx($blur_image) && $yj >= 0 && $yj < imagesy($blur_image)) {
                    $sum += imagecolorat($blur_image, $xi, $yj);
                    $count++;
                }
            }
        }
        imagesetpixel($blur_image, $x, $y, $sum / $count);
    }
}

// 保存濾鏡后的圖像
imagejpeg($blur_image, 'output.jpg');

// 銷毀圖像資源
imagedestroy($image);
imagedestroy($blur_image);
?>

這個(gè)示例中,我們使用了一個(gè)3x3的模糊濾鏡內(nèi)核,對(duì)每個(gè)像素及其周圍的像素進(jìn)行加權(quán)平均,從而實(shí)現(xiàn)模糊效果。您可以根據(jù)需要調(diào)整內(nèi)核大小和權(quán)重。

0