溫馨提示×

PHP圖形處理怎樣進(jìn)行圖像水印

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

在PHP中進(jìn)行圖像水印,可以使用GD庫或Imagick擴(kuò)展。以下是使用這兩種方法的示例代碼:

方法一:使用GD庫

<?php
function addWatermark($imagePath, $watermarkText, $outputPath) {
    // 加載原始圖像和水印圖像
    $originalImage = imagecreatefromjpeg($imagePath);
    $watermarkImage = imagecreatefrompng('watermark.png');

    // 獲取原始圖像和水印圖像的尺寸
    $originalImageWidth = imagesx($originalImage);
    $originalImageHeight = imagesy($originalImage);
    $watermarkImageWidth = imagesx($watermarkImage);
    $watermarkImageHeight = imagesy($watermarkImage);

    // 計算水印的位置(這里將水印放在右下角)
    $destX = $originalImageWidth - $watermarkImageWidth;
    $destY = $originalImageHeight - $watermarkImageHeight;

    // 將水印圖像粘貼到原始圖像上
    imagecopy($originalImage, $watermarkImage, $destX, $destY, 0, 0, $watermarkImageWidth, $watermarkImageHeight);

    // 保存帶有水印的圖像
    imagejpeg($originalImage, $outputPath);

    // 銷毀圖像資源
    imagedestroy($originalImage);
    imagedestroy($watermarkImage);
}

$imagePath = 'input.jpg';
$watermarkText = 'Watermark';
$outputPath = 'output.jpg';

addWatermark($imagePath, $watermarkText, $outputPath);
?>

方法二:使用Imagick擴(kuò)展

<?php
function addWatermark($imagePath, $watermarkText, $outputPath) {
    // 加載原始圖像和水印圖像
    $originalImage = new Imagick($imagePath);
    $watermarkImage = new Imagick('watermark.png');

    // 設(shè)置水印的透明度
    $watermarkImage->setImageOpacity(0.5);

    // 獲取原始圖像和水印圖像的尺寸
    $originalImageWidth = $originalImage->getWidth();
    $originalImageHeight = $originalImage->getHeight();
    $watermarkImageWidth = $watermarkImage->getWidth();
    $watermarkImageHeight = $watermarkImage->getHeight();

    // 計算水印的位置(這里將水印放在右下角)
    $destX = $originalImageWidth - $watermarkImageWidth;
    $destY = $originalImageHeight - $watermarkImageHeight;

    // 將水印圖像粘貼到原始圖像上
    $originalImage->compositeImage($watermarkImage, Imagick::COMPOSITE_OVER, $destX, $destY);

    // 保存帶有水印的圖像
    $originalImage->writeImage($outputPath);

    // 銷毀圖像資源
    $originalImage->clear();
    $originalImage->destroy();
    $watermarkImage->clear();
    $watermarkImage->destroy();
}

$imagePath = 'input.jpg';
$watermarkText = 'Watermark';
$outputPath = 'output.jpg';

addWatermark($imagePath, $watermarkText, $outputPath);
?>

這兩種方法都可以實現(xiàn)在PHP中對圖像添加水印的功能。你可以根據(jù)自己的需求和場景選擇合適的方法。

0