PHP圖形處理怎樣進(jìn)行銳化

PHP
小樊
81
2024-10-30 15:52:27
欄目: 編程語言

在 PHP 中,可以使用 GD 庫或 ImageMagick 庫進(jìn)行圖像處理,包括銳化操作。以下是使用這兩種庫進(jìn)行銳化的示例代碼:

  1. 使用 GD 庫進(jìn)行銳化:
<?php
function sharpen_image($input_image, $output_image, $radius = 1, $sigma = 1) {
    $image = imagecreatefromjpeg($input_image);
    $width = imagesx($image);
    $height = imagesy($image);

    for ($x = 0; $x < $width; $x++) {
        for ($y = 0; $y < $height; $y++) {
            $dx = $x - floor($width / 2);
            $dy = $y - floor($height / 2);
            $value = 0;

            for ($i = -$radius; $i <= $radius; $i++) {
                for ($j = -$radius; $j <= $radius; $j++) {
                    $ni = $x + $i;
                    $nj = $y + $j;

                    if ($ni >= 0 && $ni < $width && $nj >= 0 && $nj < $height) {
                        $value += getPixelValue($image, $ni, $nj) * (1 + 2 * $sigma * $i / $width);
                    }
                }
            }

            setPixelValue($image, $x, $y, min(255, max(0, $value)));
        }
    }

    imagejpeg($image, $output_image);
    imagedestroy($image);
}

function getPixelValue($image, $x, $y) {
    if ($x >= 0 && $x < imagesx($image) && $y >= 0 && $y < imagesy($image)) {
        return imagecolorat($image, $x, $y);
    }
    return 0;
}

function setPixelValue($image, $x, $y, $value) {
    imagesetpixel($image, $x, $y, $value);
}

$input_image = 'input.jpg';
$output_image = 'output.jpg';
sharpen_image($input_image, $output_image);
?>
  1. 使用 ImageMagick 庫進(jìn)行銳化:

首先,確保已經(jīng)安裝了 ImageMagick 庫。然后,可以使用以下代碼進(jìn)行銳化操作:

<?php
function sharpen_image($input_image, $output_image, $radius = 1, $sigma = 1) {
    $image = new Imagick($input_image);
    $image->sharpenImage(new ImagickPixel('none'), $radius, $sigma);
    $image->writeImage($output_image);
    $image->clear();
    $image->destroy();
}

$input_image = 'input.jpg';
$output_image = 'output.jpg';
sharpen_image($input_image, $output_image);
?>

在這兩個(gè)示例中,sharpen_image 函數(shù)接受輸入圖像文件名、輸出圖像文件名以及銳化半徑和sigma值作為參數(shù)??梢愿鶕?jù)需要調(diào)整這些參數(shù)以獲得不同的銳化效果。

0