相關縮圖伺服器整理
Contents
當網站需要處理大量圖片的縮放、裁切和格式轉換時,使用專門的縮圖伺服器(Image Server)是最有效率的解決方案。這篇介紹兩個常見的開源縮圖伺服器:Thumbor 和 Imagor。
為什麼需要縮圖伺服器?
直接在應用程式中處理圖片(使用 ImageMagick、GD 等)的問題:
- 佔用應用伺服器的 CPU 和記憶體
- 無法快取處理後的圖片
- 難以動態調整輸出尺寸
縮圖伺服器的優點:
- 專門處理圖片,效能最佳化
- 透過 URL 動態指定尺寸、裁切方式、濾鏡
- 結合 CDN 快取,同一張圖只處理一次
- 支援 WebP、AVIF 等現代格式的自動轉換
Thumbor
Thumbor 是由 Globo.com(巴西媒體公司)開發的 Python 開源縮圖伺服器,是業界廣泛使用的成熟方案。
主要功能
- 智慧裁切:使用臉部辨識和特徵點偵測,自動保留圖片的重要部分
- URL 簽名:防止未授權的圖片處理請求
- 多種儲存後端:支援本地檔案、AWS S3、Google Cloud Storage
- 結果快取:處理過的圖片可以快取到 Redis 或檔案系統
安裝方式
|
|
URL 格式
Thumbor 的 URL 結構:
|
|
範例:
|
|
基本設定(thumbor.conf)
|
|
Imagor
Imagor 是以 Go 語言實作的縮圖伺服器,設計目標是相容 Thumbor 的 URL 格式,同時提供更高的效能。
Imagor 的優勢
- Go 語言:天生的並行處理能力,比 Python 版本效能更高
- 相容 Thumbor URL:可以無痛遷移
- 使用 libvips:底層使用 libvips 圖片處理庫,速度極快
- 支援多種格式:JPEG、PNG、GIF、WebP、AVIF、TIFF 等
安裝方式
|
|
URL 格式(與 Thumbor 相容)
|
|
Thumbor vs Imagor 比較
| 特性 | Thumbor | Imagor |
|---|---|---|
| 語言 | Python | Go |
| 效能 | 中等 | 高(libvips) |
| 成熟度 | 高(約 2010 年起) | 較新(2022 年起) |
| Docker 映像大小 | 較大 | 較小 |
| Thumbor URL 相容 | — | ✓ |
| 臉部辨識裁切 | ✓(opencv) | 部分支援 |
| 社群支援 | 大 | 成長中 |
建議:新專案可以考慮 Imagor(效能更好、Go 生態系),若已有 Thumbor 基礎設施則繼續使用,兩者 URL 格式相容,遷移成本低。