簡體   English   中英

Rails - 如何從S3獲取圖像,調整大小並將縮略圖保存到S3?

[英]Rails - how to fetch images from S3, resize them and save thumbnails to S3?

我們有很多圖像存儲在Amazon S3存儲桶中,我們需要調整它們的大小。 因此,我們需要抓取存儲桶中的所有圖像並逐個調整大小(根據其方向)。 最好的方法是什么? 只寫一個ruby腳本或者有什么方法可以做到嗎?

謝謝

在過去,我在工人類中使用了aws-sdk-ruby gemrmagick的組合:

  • 從本地下載S3中的原始文件
  • 應用auto_orient
  • 調整x / y / z的大小
  • 將orignal和新版本重新上傳到S3

無論何時收到未來圖像,您都可以在后台排隊這樣的進程(delayed_job / sideqik / resque / etc)。

這是一個要點

也可以使用簡單的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非常強大。

請以各種方式查看此內容 ,您可以使用調整圖像大小。

您也可以讓縮略圖像這樣

s3cmd能夠從s3路徑下載所有文件。 ImageMagick能夠進行批處理(盡管示例腳本沒有描述它)。 如果您希望一次處理一個圖像,則應適當地修改腳本以進行循環。

另一方面,如果您已經在應用程序中使用了paperclip,它會帶來一些rake任務。 看看文檔

rake paperclip:refresh:thumbnails

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM