使用RMagick计算缩略图大小

时间:2010-03-01 12:14:56

标签: ruby-on-rails rmagick

我正在使用 attachment_fu RMagick 在rails应用上上传/调整图片大小。目前我使用本地文件系统作为存储,但我计划将AWS S3用于该作业。无论如何,我很想知道其他人使用S3的经历,我也有一个很大的问题。在我的应用程序中,当用户上传图像时,我将此图像调整为5种不同的尺寸,并将它们与原始图像一起存储。 (共6张图片)基于模型中提供的缩略图大小:

 :thumbnails => { 
                 "thumb" => "120x80",
                  "extra_small"=>"480x320",
                  "small"=>"640x480", 
                  "medium" => "800x533",
                  "large"=>"2738x1825", 
                  "extra_large" => "3464x2309" 

最后我得到了:

  • image_foo.jpg(原始图片)
  • image_foo_thumb.jpg
  • image_foo_extra_small.jpg
  • image_foo_small.jpg
  • image_foo_medium.jpg
  • image_foo_large.jpg
  • image_foo_extra_large.jpg

我重新调整这些图像大小的原因是我需要将每个图像的实际大小存储在数据库中。但实际上即使我指定缩略图的大小我也没有得到确切的大小。无论如何它是好的,因为大小是根据宽高比计算的。

但是我真的不想浪费服务器上的空间,如果我可以计算缩略图大小而不将它们保存到文件系统。换句话说,我只需要存储原始文件而不是缩略图,但我仍需要获取缩略图的大小。是否可以获得实际的缩略图大小而无需在RMagick中创建它们?

1 个答案:

答案 0 :(得分:2)

S3上的空间相对便宜。所以我不会太担心。 但是,您可以考虑将图像转换为更小的尺寸。你可以留下小的和超小的,并使用HTML img标签的width和height属性。但是,这会使您的侧面负载变慢并导致更多流量。

我猜你真正想要的是一个解决方案,可以在请求时立即转换文件吗?我不确定是否有现成的解决方案。然而,这将是一个主要的表现糟透了。

所以我的建议是坚持使用所有不同的尺寸,并向亚马逊支付几美分。这将产生最佳性能并且最容易维护。您不必担心扩展以及存储变得越来越便宜且更便宜的事实。