PHP Imagemagick水印
在網站開發過程中,我們經常需要給圖片添加水印,以保證圖片版權,提高網站美觀度和個性化程度,那么如何使用PHP Imagemagick給圖片添加水印呢?
首先,我們需要安裝Imagemagick以及php-imagick擴展。
yum install ImageMagick pecl install imagick
接著,我們需要準備以下素材:一張需要加水印的圖片、一張加了水印的圖片、一個水印文字。
$srcImg = 'source.jpg'; //需要加水印的圖片 $destImg = 'destination.jpg'; //加了水印的圖片 $watermark = 'watermark.png'; //水印圖片
現在,我們來看一下如何使用文字水印。
$returnValue = exec("convert {$srcImg} -pointsize 32 -fill white -undercolor '#00000080' -gravity SouthWest -annotate +16+16 'Your Watermark' -strip {$destImg}"); if($returnValue !== null && strpos($returnValue, 'Error') !== false){ echo 'Error while processing image'; } else { echo 'Image processed successfully'; }
在以上代碼中,我們使用exec()函數來運行使用Imagemagick的convert命令。其中,我們使用-pointsize設置水印文字的大小,-fill設置水印顏色,-undercolor設置背景顏色,-gravity設置水印位置,-annotate設置水印內容,-strip刪除原圖重復信息。
如果我們想使用一個圖片作為水印呢?下面是使用圖片作為水印的代碼:
// 開啟Imagick對象 $image = new \Imagick($srcImg); // 設置水印圖片 $watermark_image = new \Imagick($watermark); // 獲取原圖寬度和高度 $imageWidth = $image->getImageWidth(); $imageHeight = $image->getImageHeight(); // 獲取水印圖片的寬度和高度 $watermarkWidth = $watermark_image->getImageWidth(); $watermarkHeight = $watermark_image->getImageHeight(); // 計算水印最大寬高 $maxWidth = $imageWidth / 2; $maxHeight = $imageHeight / 2; if($watermarkWidth >$maxWidth || $watermarkHeight >$maxHeight){ $watermark_image->resizeImage($maxWidth, $maxHeight, \Imagick::FILTER_BOX, 1); } // 計算水印位置 $x = $imageWidth - $watermark_image->getImageWidth() - 10; $y = $imageHeight - $watermark_image->getImageHeight() - 10; // 把水印圖片加到原圖上 $image->compositeImage($watermark_image, \Imagick::COMPOSITE_ATOP, $x, $y); // 保存新圖片 $image->writeImage($destImg);
在以上代碼中,我們先開啟一個Imagick對象,并使用另一個Imagick對象加載水印圖片,然后計算出水印圖片的寬度和高度,再根據原圖的寬度和高度,以及水印圖片的寬度和高度,計算出水印圖片的位置,最后使用compositeImage()函數將水印圖片加到原圖上,并寫入新圖片。
PHP Imagemagick給圖片添加水印,是一個非常棒的功能。我們可以通過PHP Imagemagick輕松構建出一個獨具特色和創新的網站,來滿足用戶的需求。