golang 每日一庫之 picfit
thoas/picfit
是一個用 Go 語言編寫的圖片處理服務器,主要用於 動態圖像裁剪、縮放、格式轉換和緩存 等功能。
它適合用於圖片 CDN、圖像代理服務或網站中的動態圖片展示,尤其適合現代化網站、媒體服務、電子商務平臺等場景。
項目地址
GitHub: https://github.com/thoas/picfit
優點
-
支持多種操作
:裁剪(crop)、縮放(resize)、縮放裁剪(smartcrop)、縮略圖(thumbnail)
-
支持多種圖片格式
:JPEG, PNG, GIF(靜態)
-
圖像處理支持緩存
(Redis 或本地文件系統)
-
多種存儲驅動支持
(本地磁盤、Amazon S3、Google Cloud Storage)
-
RESTful 接口
,便於前端或其他服務調用
-
支持簽名機制
:可防止他人惡意篡改參數生成新圖
-
高性能
:基於
Go
,並使用bimg
和libvips
提供高效圖像處理 -
Docker 支持
:提供了現成的 Dockerfile 方便部署
支持的操作(type
參數)
示例
以 resize
爲例,進行圖片縮放:
GET /image?url=https://example.com/test.jpg&type=resize&width=300&height=300
你可以訪問的形式通常如下:
http://localhost:3001/image?url={圖片地址}&type=resize&width=300&height=300
支持的參數
URL 簽名
你可以啓用 URL 簽名機制,防止他人篡改參數:
http://localhost:3001/image?url=https://example.com/test.jpg&type=resize&width=300&height=300&s=5a78f1a...
配置中的 key
將用於生成簽名哈希。
配置
可以使用 config.json
配置:
{
"port": 3001,
"quality": 85,
"enable_signature": true,
"key": "my-secret",
"storage": {
"type": "file",
"location": "./tmp"
},
"source": {
"type": "http"
},
"kvstore": {
"type": "redis",
"host": "localhost",
"port": 6379
}
}
支持的存儲類型包括:
-
file
:本地文件系統
-
s3
:Amazon S3
-
gcs
:Google Cloud Storage
Docker 快速部署
docker run -p 3001:3001 \
-v $(pwd)/config.json:/app/config.json \
-v $(pwd)/tmp:/tmp \
thoas/picfit
使用場景
電商平臺
-
用戶上傳商品圖像,前端需要不同分辨率的圖片展示(首頁縮略圖、詳情頁大圖、手機端優化圖)。
-
Picfit 可以按需生成不同尺寸圖像,避免存儲冗餘。
媒體平臺
-
用戶上傳封面圖,系統自動生成裁剪中心圖展示在推薦頁。
-
可結合 CDN,將生成圖緩存加速訪問。
多平臺前端適配
- 支持 WebP 輸出,可自動按客戶端瀏覽器請求格式返回高效圖像。
性能
-
Picfit 使用
bimg
庫,基於 libvips 圖像處理庫,比傳統的ImageMagick
更快、更節省內存。 -
對於大規模圖片服務,建議搭配 Redis 做緩存。
擴展
雖然項目本身功能已較爲完整,但你可以擴展:
-
添加 Web UI 前端測試工具
-
CDN 策略集成(如 Cloudflare 自動緩存圖像)
-
與 OAuth / JWT 認證結合,控制圖片訪問權限
-
使用 Prometheus + Grafana 對性能做監控
標題:golang 每日一庫之 picfit
作者:mooncakeee
地址:http://blog.dd95828.com/articles/2025/06/20/1750428410306.html
聯繫:scotttu@163.com
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/hwqAC9E2VaEMXDNc1z72tQ