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

PHP生成縮略圖類,支援自定義寬高與裁切

     編輯:PHP 相關知識

PHP 縮略圖生成類:支援自定義尺寸與智能裁切

在 Web 開發中,圖片縮略圖生成是常見需求。本文介紹一個功能完善的 PHP 類別 resizeimage,它能根據指定寬高生成縮略圖,並提供兩種模式:等比縮放與裁切填充。類別自動偵測圖片格式(JPG、GIF、PNG),並輸出高質量的 JPEG 縮略圖。

核心功能

  • 支援 JPG、GIF、PNG 三種主流格式
  • 可設定目標寬度與高度
  • 兩種模式:cut=1 裁切填充(保持比例、填滿畫布),cut=0 等比縮放(完整顯示、留白)
  • 自動計算縮放比例,避免圖片變形
  • 輸出路徑可自定義

類別結構

class resizeimage {
    var $type;           // 圖片類型
    var $width;          // 原始寬度
    var $height;         // 原始高度
    var $resize_width;   // 目標寬度
    var $resize_height;  // 目標高度
    var $cut;            // 是否裁切 (1/0)
    var $srcimg;         // 源圖路徑
    var $dstimg;         // 目標圖路徑
    var $im;             // GD 圖片資源

    function resizeimage($img, $wid, $hei, $c, $dstpath) { ... }
    function initi_img() { ... }      // 根據類型建立 GD 資源
    function dst_img($dstpath) { ... } // 解析目標路徑
    function newimg() { ... }         // 核心縮放/裁切邏輯
}

使用範例

<?php
require_once 'resizeimage.class.php';

// 產生 200x150 裁切模式縮略圖
$thumb = new resizeimage('photo.jpg', 200, 150, 1, 'thumb_photo.jpg');

// 產生 300x300 等比縮放模式
$thumb2 = new resizeimage('photo.png', 300, 300, 0, 'thumb_photo2.jpg');
?>

關鍵邏輯解析

裁切模式 (cut=1):比較原圖與目標長寬比,以「高度優先」或「寬度優先」方式計算裁切區域,使用 imagecopyresampled 進行高質量重採樣,確保輸出圖片銳利無鋸齒。

等比模式 (cut=0):按比例縮放直到一邊達到目標尺寸,另一邊自動計算,圖片完整顯示於畫布中央。

注意事項

  • 伺服器需啟用 GD 擴展並支援 imagecreatetruecolor、imagecopyresampled 等函式
  • 輸出目錄需具備寫入權限
  • 大圖處理時注意記憶體限制 (memory_limit)

此類別結構清晰、易於擴展,可直接整合至任何 PHP 專案中,滿足電商商品圖、用戶頭像、文章配圖等多種縮略圖需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved