Skip to main content

簡介

Laravel 透過 Image Facade 提供流暢的圖片加工 API。你可以在整個框架中以一致的表達方式進行縮放、裁切、編碼、儲存等操作。 其內部使用 Intervention Image,同時支援 PHP 的 GD 擴充與 Imagick 擴充。
圖片處理可能大量消耗 CPU 與記憶體。大規模圖片處理不應於 HTTP 請求中執行,建議放在佇列 Job 中處理。
此功能需 Laravel v13.20.0 以上。若使用較舊版本,請以 composer update 更新到最新版。

安裝

在使用圖片加工功能前,請透過 Composer 安裝 Intervention Image。
同時,請確認 PHP 依所選驅動安裝了 GD 或 Imagick 擴充。

設定

設定檔位於 config/image.php。若尚未存在,可透過 Artisan 發布:
預設驅動可在設定檔或環境變數 IMAGE_DRIVER 指定。支援 gdimagick

讀取圖片

Image Facade 提供多種方法從不同來源建立圖片實例。圖片內容為延遲載入,僅在真正處理或要求 byte 序列時才會實際載入。

上傳的檔案

從請求取得上傳圖片可用 image 方法。若檔案不存在則回傳 null
UploadedFile 實例建立可用 fromUpload
從上傳檔案建立的圖片實例可透過 file 方法取回原始檔案。

儲存空間中的檔案

要從檔案系統磁碟所儲存的檔案建立圖片實例,可使用 fromStorage。第一個參數為檔案路徑,第二個為磁碟名稱。
也可透過 Storage Facade 的 image 方法建立。

其他來源

亦可從 byte、本機路徑、URL、Base64 建立圖片實例。

加工圖片

圖片實例是不可變的。每個方法都會回傳將轉換加入處理管線的新實例,因此可以方法鏈書寫。轉換會依加入管線的順序處理,編碼則只在最後執行一次。

縮放

其他轉換

條件式轉換

圖片實例支援 Conditionable trait,可用 when / unless 進行條件式轉換。

編碼

預設會以原格式編碼,若要轉換格式可用以下方法:
透過 quality 設定輸出品質(1〜100):
optimize 是格式轉換 + 品質設定的捷徑。預設為 WebP、品質 70:
也可以取為 byte、Base64、Data URI:

儲存

store 方法可將圖片存到檔案系統磁碟。Laravel 會自動產生唯一檔名,回傳儲存路徑。
若要指定檔名請用 storeAs
若要以 public 可見性儲存可用 storePublicly / storePubliclyAs
儲存失敗會回傳 false

取得圖片資訊

透過 mimeTypeextensiondimensionswidthheight 方法可取得圖片資訊。這些方法會對經處理後的圖片作用(例如 cover(400, 400) 之後呼叫 width() 會回傳 400)。

自訂驅動

Laravel 的圖片管理器繼承 Illuminate\Support\Manager,可透過 extend 註冊自訂驅動。 自訂驅動需實作 Illuminate\Contracts\Image\Driver 介面,process 方法接收原始圖片 byte 與管線,並回傳處理後的圖片 byte。
在服務提供者的 boot 方法中註冊:
要為特定圖片指定驅動可使用 using

自訂轉換

實作 Illuminate\Contracts\Image\Transformation 介面的類別可以定義自訂轉換。
在服務提供者的 boot 方法中註冊 handler:
註冊後即可透過 transform 方法套用:
最後修改於 2026年8月2日