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

PHP 搭配 ImageMagick 實作圖片上傳與縮圖自動產生

     編輯:PHP 相關知識

架構說明

  • PHP 處理檔案上傳 ($_FILES / 舊版 $HTTP_POST_FILES)。
  • ImageMagick convert 工具執行縮圖:convert -geometry 寬x高 來源檔 縮圖檔。
  • 需建立 images/ 目錄並給 Web 使用者寫入權限。

上傳表單 uploadform.html

<form enctype="multipart/form-data" action="upload.php" method=POST>
選擇圖片: <input name="image" type="file">
<input type="submit" value="上傳">
</form>

處理程式 upload.php

<?php
$flag = 'true';
if (isset($_FILES['image']) && $_FILES['image']['tmp_name']) {
    $type = $_FILES['image']['type'];
    if ($type == 'image/gif' || $type == 'image/png' || $type == 'image/pjpeg') {
        $dest = './images/' . $_FILES['image']['name'];
        if (move_uploaded_file($_FILES['image']['tmp_name'], $dest)) {
            $thumb = './images/small_' . $_FILES['image']['name'];
            $cmd = '/usr/bin/convert -geometry 100x100 ' . escapeshellarg($dest) . ' ' . escapeshellarg($thumb);
            exec($cmd);
        } else $flag = 'false';
    } else $flag = 'false';
} else $flag = 'false';

if ($flag == 'false') {
    echo '錯誤<p><a href="uploadform.html">重新上傳</a>';
} else {
    echo '<img src="' . $thumb . '">';
    echo '<img src="' . $dest . '">';
}
?>

進階應用

  • 搭配 GetImageSize() 取得原圖尺寸,計算等比例縮放參數。
  • 結合資料庫記錄檔案路徑、尺寸、上傳時間,建立圖庫索引。
  • ImageMagick 尚支援旋轉、格式轉換、銳化、加浮水印等,參考 man convert。

安全提醒:務必驗證 MIME 類型、檔案副檔名、使用 escapeshellarg() 防命令注入、限制上傳檔案大小。

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