實時圖像調整大小、裁剪和記憶體伺服器產品
我正在調查哪些產品允許您通過 HTTP API 以任意圖像大小請求圖像。伺服器將位於 CDN 之後,但仍需要能夠處理相當多的流量並可能進行負載平衡。
我的任務是編寫這樣的服務,但我想做一些盡職調查,看看有哪些商業或開源解決方案。Google並沒有特別有用。可能是因為我一直在尋找錯誤的術語。
由於公司政策,第三方網站和服務是不可能的。
您可以將 ImageMagick 與 php/perl/python 一起使用。它將允許您調整圖像大小。這裡唯一的問題是你想記憶體圖像,理想情況下。
為了使圖像記憶體友好,您必須重定向到唯一的 URL,並且必須為每次重定向呼叫保持狀態。
例子。
http://example.com/resize/image.php?image=example.jpg&width=640&height=320 調整example.jpg的大小。為了使其能夠記憶體,image.php 應該返回一個 url 重定向。 http://example.com/resize/static/example640x320.jpg
對於第二個 URL,請確保您設置了正確的過期標頭,以便 CDN 可以記憶體它。但是您還必須維護
http://example.com/resize/image.php?image=example.jpg&width=640&height=320>到<http://example.com/resize/static/example640x320.jpg
的映射, 因為使用對該圖像的每個請求,都會呼叫 image.php 腳本。對於負載平衡場景中的數據同步,您可以使用 nfs 共享或使用 rsync,如果可以接受幾秒鐘的延遲,或者使用通過 API 上傳文件(當然是安全的)在後端伺服器之間同步數據。
大小是指文件大小還是圖像高度/寬度?
它們可能不一定允許“任意”大小,但減少頻寬的代理(又名“加速器”)會重新壓縮圖像文件以縮小它們,以及其他節省頻寬的技巧。維基百科有一個關於它們的頁面,其中包含選項列表。
如果要即時重新縮放圖像,那基本上就是縮略圖腳本的作用。其中很多是提前執行的,但也有一些是“即時”執行的。例如,CPAN 的Imager模組有一個範例 CGI 腳本,可以將上傳的圖像縮放到 200x200。