2010-03-01 81 views
0

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

: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中创建实际的缩略图大小?

回答

2

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

我想你真正在寻找的是一个解决方案,当它们被请求时,即时转换文件?我不确定是否有现成的解决方案。但是,这将是一个主要的表现吸引力。

所以我的建议是坚持所有不同的尺寸,并向亚马逊付更多的钱。这将产生最佳性能,并且最容易维护。您不必担心扩展问题,以及这种解决方案存储越来越便宜且便宜的事实。

+0

S3真的很便宜,我们在这里讨论的JPG应该在KB范围内,而不是MB或GB。 如果您担心,像amurmann提到的那样,选择所需大小的子集将会很好地工作 - 允许浏览器调整到所需的精确像素尺寸。 – 2010-03-01 23:18:01

+0

谢谢你们。这是一款适用于摄影师的图像应用程序,因此大多数图像都是高分辨率图像。我明白S3是最好的解决方案,我很乐意坚持这一点。首先,我正考虑在S3上只存储原始图像,并为每个使用请求生成并下载重新调整大小的图像。但是,当我使用ImageMagick时,这将消耗更多的服务器内存。正如你所建议的那样,最好一次重新调整它们的大小,然后存储在S3中。 – randika 2010-03-02 06:18:22