我們有很多圖像存儲在Amazon S3存儲桶中,我們需要調整它們的大小。所以,我們需要抓住桶中的所有圖像,並逐一調整它們的大小(根據它們的方向)。 這樣做的最佳方式是什麼?寫只是一個紅寶石腳本或有什麼辦法如何做到這一點?Rails - 如何從S3獲取圖像,調整它們大小並將縮略圖保存到S3?
感謝
我們有很多圖像存儲在Amazon S3存儲桶中,我們需要調整它們的大小。所以,我們需要抓住桶中的所有圖像,並逐一調整它們的大小(根據它們的方向)。 這樣做的最佳方式是什麼?寫只是一個紅寶石腳本或有什麼辦法如何做到這一點?Rails - 如何從S3獲取圖像,調整它們大小並將縮略圖保存到S3?
感謝
在過去,我已經使用了aws-sdk-ruby gem和rmagick的組合在輔助類:
auto_orient
無論何時你接收到未來的圖像,你都可以在後臺排隊這樣的進程(delayed_job/sideqik/resque/etc)。
這是gist。
一個簡單的shell腳本,也可以使用(與一些外部的幫助)
安裝s3cmd。它是一個與s3交互的命令行工具。 安裝ImageMagick。這是rMagic引擎蓋
下使用,然後使用它在shell腳本這樣
#!/bin/bash
S3CMD=$(which s3cmd)
CONVERT=$(which convert)
#
# Download the file from s3
$S3CMD get s3://mybucket/path/to/image/file.gif
# convert it to thumbnail
$CONVERT file.gif -resize 64x64 resize_file.gif
# upload the thumbnail back to s3
$S3CMD put resize_file.git s3://mybucket/path/to/thumbnails/resize_file.gif
# cleanup
rm file.gif resize_file.gif
注:示例腳本上面沒有任何錯誤檢查。在執行下一個命令之前,您應該檢查每個命令的狀態代碼。
ImageMagick功能非常強大。
請see this各種方式,您可以使用調整圖像大小。
您也可以讓縮略圖like this
s3cmd能夠從S3路徑下載所有文件。 ImageMagick能夠批量處理(雖然示例腳本沒有描述它)。如果您希望一次處理一個圖像,則應適當修改循環腳本。另一方面,如果您已在應用程序中使用回形針,則會附帶一些耙子任務。檢查文檔
rake paperclip:refresh:thumbnails