如何使用 PHP 實作映像上傳和處理功能
在 Web 開發中,映像上傳和處理是常見的功能需求。本文將介紹如何使用 PHP 實作影像上傳和處理功能,並提供對應的程式碼範例供參考。
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="image" id="image"> <input type="submit" value="上传"> </form>
在上述程式碼中,<form>
標籤的action
屬性指定了表單提交後處理資料的PHP 檔案的位址為upload.php
。 <input type="file">
標籤用於指定映像檔的輸入欄位。
upload.php
的 PHP 文件,用於處理圖片上傳。 PHP 程式碼如下:<?php $targetDir = "uploads/"; // 上传文件保存的目录 $fileName = basename($_FILES["image"]["name"]); // 获取上传文件名 $targetFilePath = $targetDir . $fileName; // 拼接上传文件路径 // 检查文件类型 $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION); if (!in_array($fileType, array("jpg", "jpeg", "png", "gif"))) { echo "只允许上传 JPG, JPEG, PNG 或 GIF 格式的图像"; exit; } // 尝试移动上传文件到指定目录 if (move_uploaded_file($_FILES["image"]["tmp_name"], $targetFilePath)) { echo "文件上传成功"; } else { echo "文件上传失败"; } ?>
在上述程式碼中,首先定義了一個上傳檔案保存的目錄uploads/
,並透過basename()
函數取得上傳文件的檔案名稱。然後,將目標檔案路徑拼接為 $targetDir . $fileName
。
接下來,透過 pathinfo()
函數取得上傳檔案的類型,並使用 in_array()
函數檢查是否為允許的檔案類型。如果上傳檔案的類型不是 JPG、JPEG、PNG 或 GIF,則輸出錯誤訊息並終止腳本執行。
最後,使用 move_uploaded_file()
函數將上傳檔案移至指定目錄,並根據傳回值輸出對應的上傳結果。
<?php $sourceImage = "uploads/" . $fileName; // 上传的原始图像路径 $targetImage = "uploads/resized_" . $fileName; // 调整大小后的图像保存路径 $targetWidth = 800; // 调整后的图像宽度 list($sourceWidth, $sourceHeight, $sourceType) = getimagesize($sourceImage); // 根据原始图像类型创建图像资源 switch ($sourceType) { case IMAGETYPE_JPEG: $source = imagecreatefromjpeg($sourceImage); break; case IMAGETYPE_PNG: $source = imagecreatefrompng($sourceImage); break; case IMAGETYPE_GIF: $source = imagecreatefromgif($sourceImage); break; } // 计算调整后的图像高度 $targetHeight = $sourceHeight * $targetWidth / $sourceWidth; // 创建调整后的图像资源 $target = imagecreatetruecolor($targetWidth, $targetHeight); // 调整图像大小 imagecopyresampled($target, $source, 0, 0, 0, 0, $targetWidth, $targetHeight, $sourceWidth, $sourceHeight); // 保存调整后的图像 switch ($sourceType) { case IMAGETYPE_JPEG: imagejpeg($target, $targetImage); break; case IMAGETYPE_PNG: imagepng($target, $targetImage); break; case IMAGETYPE_GIF: imagegif($target, $targetImage); break; } // 释放图像资源 imagedestroy($source); imagedestroy($target); echo "图像调整大小成功"; ?>
在上述程式碼中,首先定義了調整後的圖像保存路徑$targetImage
和目標圖像的寬度$targetWidth
。
然後,透過 getimagesize()
函數取得上傳的原始圖像的寬度、高度和類型。根據原始映像的類型使用 imagecreatefromjpeg()
、imagecreatefrompng()
或 imagecreatefromgif()
函數建立映像資源物件 $source
。
接下來,根據調整後的圖像寬度計算對應的高度,並使用 imagecreatetruecolor()
函數建立調整後圖像的資源物件 $target
。
使用 imagecopyresampled()
函數將原始影像複製並調整到調整後的影像中。
最後,使用imagejpeg()
、imagepng()
或imagegif()
函數將調整後的圖片儲存到指定路徑,並釋放影像資源。
總結
本文介紹如何使用 PHP 實作映像上傳和處理功能。透過建立圖像上傳表單、處理圖像上傳和進行圖像處理的 PHP 程式碼範例,可以輕鬆實現圖像上傳和處理功能。開發者可以根據實際需求對程式碼進行擴展和定制,以滿足不同的影像處理需求。
以上是如何使用 PHP 實現圖像上傳和處理功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!