PHP 為圖片加上浮水印

閱讀時間約 7 分鐘

使用 GD庫:

1.先確認 PHP GD lib 是否已安裝,利用 phpinfo() 頁面來檢查。

<?php
phpinfo();
?>

如果出現 GD Support "enabled",就是有啟用 GD lib了,

raw-image

如果沒有的話,請打開 php.ini 找到 ;extension=gd 把前面的 ; 拿掉,再重開網頁伺服器,php應該就可以支援 GD lib了。

raw-image

2.PHP 範例程式碼:

<?php
/* 原始圖片 */
$imagePath = "images/hat2_4982.jpg";
$outputPath = "images/hat2_4982_xxxxxx.jpg";
// 定義浮水印文字
$watermarkText1 = 'GD_Test';
$watermarkText2 = 'xxxxxx';

/* 用來加上浮水印的程式 */
function addWatermark($imagePath, $outputPath, $text1, $text2) {
    // 載入圖片
    $image = imagecreatefromjpeg($imagePath);
    $width = imagesx($image);
    $height = imagesy($image);
   
    // 設定字型顏色,使用半透明的白色
    $textColor = imagecolorallocatealpha($image, 255, 255, 255, 50);
// 255, 255, 255 為白色,100 是透明度
// 設定字型,這裡使用可用的字型
//$fontSize = 20; // 字型大小
// 根據圖片大小設定字型大小,這裡以圖片寬度的比例來設定字型大小
$fontSize = min($width, $height) / 20; // 例如,字型大小設為圖片最小邊長的1/20
$fontFile = 'fonts/Arial.ttf'; // 字型檔案路徑
// 計算字型的高寬,以便安排行距
$bbox1 = imagettfbbox($fontSize, 0, $fontFile, $text1);
$bbox2 = imagettfbbox($fontSize, 0, $fontFile, $text2);
$lineHeight = max($bbox1[1] - $bbox1[7], $bbox2[1] - $bbox2[7]) + 10; // 加入一些間隔
// 設定浮水印在圖片的四個角落的位置
$positions = [
        [10, 1.5*$lineHeight], // 左上角
        [$width - 130, 1.5*$lineHeight], // 右上角
        [10, $height - 1.5*$lineHeight], // 左下角
        [$width - 130, $height - 1.5*$lineHeight] // 右下角
  ];
// 寫入浮水印文字到圖片
foreach ($positions as $index => $position) {
  // 在每個角落寫入 第一行文字
imagettftext($image, $fontSize, 0, $position[0], $position[1], $textColor, $fontFile, $text1);
// 偏移位置以顯示 第二行文字
      imagettftext($image, $fontSize, 0, $position[0], $position[1] + $lineHeight, $textColor, $fontFile, $text2);
}
// 保存加了浮水印的圖片
imagejpeg($image, $outputPath);
imagedestroy($image);
}
addWatermark($imagePath, $outputPath, $watermarkText1, $watermarkText2);
?>
<!DOCTYPE html>
<html lang="zh-Hant">
<head>
<meta charset="UTF-8">
<title>顯示圖片</title>
<style>
.image-container {
            width: 640px; /* 設置容器寬度 */
            height: 480px; /* 設置容器高度 */
            background-image: url('<?php echo $imagePath; ?>');
            background-size: cover; /* 覆蓋整個容器 */
}
.image-container2 {
            width: 640px; /* 設置容器寬度 */
            height: 480px; /* 設置容器高度 */
            background-image: url('<?php echo $outputPath; ?>');
            background-size: cover; /* 覆蓋整個容器 */
}
</style>
</head>
<body>
<div>
<img src="<?php echo $imagePath; ?>"></img>
</div>
<div>
<img src="<?php echo $outputPath; ?>"></img>
</div>
</body>
</html>

3.結果如下圖:

raw-image


0會員
5內容數
如果可以無所事事的放空,那才是真的幸福?
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
在這一章中,我們探討了 PHP 中的函數,包括函數的基本結構、不同的函數定義方式(如函數聲明、函數表達式、箭頭函數和匿名函數)以及如何呼叫函數。我們還討論了函數的參數處理方式,包括單個參數、多個參數、預設參數值和剩餘參數。此外,我們還介紹了函數的返回值,包括返回單個值、返回物件和返回函數的情況。
Thumbnail
本章節旨在介紹如何在不同操作系統上安裝和配置PHP環境,並使用命令行工具進行基礎操作。此外,還介紹了使用Visual Studio Code進行PHP開發的步驟,包括安裝擴展和設置調試環境。
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
這個章節介紹了PHP的基本特性和應用領域,並且列舉了使用PHP的知名公司和網站。了解PHP的簡單易學、跨平台、嵌入HTML等特性,以及PHP在動態網站、電子商務、內容管理系統、社交媒體平台、數據庫管理和API開發中的應用。
Thumbnail
介紹工作後幾個常見的小問題,包括寫 Log 的好習慣、本地印出錯誤或過程、PHPCS 工具、變數儲存於設定檔、避免魔術數字、程式碼靜態分析與動態分析。
Thumbnail
戴夫寇爾研究團隊發現PHP在Windows系統上存在遠端程式碼執行漏洞,影響多個PHP版本,包括XAMPP預設安裝環境。漏洞源於字元編碼轉換的問題,允許攻擊者在遠端伺服器上執行任意程式碼。建議使用者立即升級至最新PHP版本,或採取臨時緩解措施。
PHP(Hypertext Preprocessor)是一種流行的開源腳本語言,特別適用於網頁開發。它具有簡單的語法和易於理解的程式碼結構,並且支持多種數據庫系統和其他技術和框架集成。本文將介紹PHP的主要特點和廣泛應用性。
Thumbnail
PHP是一個功能豐富且靈活的語言,用於開發動態和互動性強的網站。本文介紹了PHP的主要功能和用途,以及它的優點和特性。不論你是一個初學者還是一個專業的開發人員,PHP都是一個值得學習和使用的強大工具。
Thumbnail
php.ini 1.short_open_tag = On 2.register_globals = Off 3.display_errors = On 4.error_reporting = E_ALL & ~E_NOTICE 5.date.timezone = Asia/Tai
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
在這一章中,我們探討了 PHP 中的函數,包括函數的基本結構、不同的函數定義方式(如函數聲明、函數表達式、箭頭函數和匿名函數)以及如何呼叫函數。我們還討論了函數的參數處理方式,包括單個參數、多個參數、預設參數值和剩餘參數。此外,我們還介紹了函數的返回值,包括返回單個值、返回物件和返回函數的情況。
Thumbnail
本章節旨在介紹如何在不同操作系統上安裝和配置PHP環境,並使用命令行工具進行基礎操作。此外,還介紹了使用Visual Studio Code進行PHP開發的步驟,包括安裝擴展和設置調試環境。
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
這個章節介紹了PHP的基本特性和應用領域,並且列舉了使用PHP的知名公司和網站。了解PHP的簡單易學、跨平台、嵌入HTML等特性,以及PHP在動態網站、電子商務、內容管理系統、社交媒體平台、數據庫管理和API開發中的應用。
Thumbnail
介紹工作後幾個常見的小問題,包括寫 Log 的好習慣、本地印出錯誤或過程、PHPCS 工具、變數儲存於設定檔、避免魔術數字、程式碼靜態分析與動態分析。
Thumbnail
戴夫寇爾研究團隊發現PHP在Windows系統上存在遠端程式碼執行漏洞,影響多個PHP版本,包括XAMPP預設安裝環境。漏洞源於字元編碼轉換的問題,允許攻擊者在遠端伺服器上執行任意程式碼。建議使用者立即升級至最新PHP版本,或採取臨時緩解措施。
PHP(Hypertext Preprocessor)是一種流行的開源腳本語言,特別適用於網頁開發。它具有簡單的語法和易於理解的程式碼結構,並且支持多種數據庫系統和其他技術和框架集成。本文將介紹PHP的主要特點和廣泛應用性。
Thumbnail
PHP是一個功能豐富且靈活的語言,用於開發動態和互動性強的網站。本文介紹了PHP的主要功能和用途,以及它的優點和特性。不論你是一個初學者還是一個專業的開發人員,PHP都是一個值得學習和使用的強大工具。
Thumbnail
php.ini 1.short_open_tag = On 2.register_globals = Off 3.display_errors = On 4.error_reporting = E_ALL & ~E_NOTICE 5.date.timezone = Asia/Tai