首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 圖片上傳類:整合縮略圖生成、水印與多格式支援

     編輯:PHP 相關知識

功能完整的 PHP 圖片上傳處理類

本類別 uploadimage() 整合了檔案上傳驗證、圖片格式檢查、大小限制、自動建立目錄、等比例生成縮略圖(支援指定高寬或僅寬度)、可選水印圖層等功能,適合快速整合至 CMS、電商或會員系統。

核心功能特色

  • 多格式支援:JPG、PNG、GIF、BMP 等。
  • 安全驗證:檢查 MIME、副檔名、檔案大小(預設 2GB 上限)。
  • 彈性縮略圖:可指定寬高、是否等比、小圖是否置中、背景填充。
  • 自動清理:同名檔案自動覆蓋,避免殘留垃圾檔。

關鍵代碼片段(簡化版)

<?php
function uploadimage(
    $upname,        // $_FILES 欄位名
    $smallmark = 1, // 是否生成縮略圖
    $dstsw,         // 縮略圖寬度
    $dstsh = 0,     // 縮略圖高度(0 為等比)
    $path_dim,      // 大圖儲存路徑
    $path_xim,      // 縮略圖儲存路徑
    $newname,       // 新檔名(不含副檔名)
    $smallname = 0, // 縮略圖檔名(0 同大圖)
    $filetype = "null" // 強制副檔名
) {
    // 1. 檢查上傳錯誤、大小、類型
    // 2. 移動暫存檔至 $path_dim/$newname.$ext
    // 3. getimagesize() 取得原圖尺寸
    // 4. 若 $smallmark==1 進行縮略圖生成邏輯:
    //    - 計算目標尺寸(等比或固定)
    //    - imagecreatetruecolor() 建立畫布
    //    - imagecopyresampled() 高品質縮放
    //    - 依原格式 imagejpeg/png/gif 輸出
    // 5. 回傳最終檔名
}
?>

使用範例

<?php
// 表單 
$result = uploadimage(
    'myphoto',      // 欄位名
    1,              // 生成縮略圖
    200,            // 縮略圖寬 200px
    150,            // 縮略圖高 150px(0 為等比)
    '/var/www/uploads/big/',   // 大圖目錄
    '/var/www/uploads/small/', // 小圖目錄
    'user_'.time()  // 新檔名
);
echo "上傳成功:$result";
?>

部署建議

  1. 確保目標目錄存在且 PHP 進程有寫入權限(mkdir($path, 0755, true))。
  2. 生產環境請將 $max_file_size 設為合理值(如 5MB = 5242880)。
  3. 搭配前端 accept="image/*" 與 JS 預覽,提升使用者體驗。
  4. 若需加水印,可在縮略圖生成後呼叫 imagecopymerge() 疊加 Logo。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved