2010-03-01 4 views
0

Я использую attachment_fu и RMagick загрузить/изменить размер изображения на приложение рельсы. В настоящее время я использую локальную файловую систему в качестве хранилища, но у меня есть план использования 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 (Original Image)
  • 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 относительно дешево. Поэтому я не стал бы слишком беспокоиться. Однако вы можете рассмотреть возможность преобразования изображений в меньшие размеры. Вы можете оставить небольшие и лишние малые и использовать атрибуты width и height тэга HTML img. Однако это замедлит загрузку вашей стороны и вызовет больше трафика.

Я думаю, что вы действительно ищете, это решение, которое преобразует файлы на лету, когда они запрашиваются правильно? Я не уверен, есть ли решение для этого с полки. Однако это будет серьезная производительность.

Так что моя рекомендация - просто придерживаться всех разных размеров и платить несколько процентов больше за амазонку. Это даст наилучшую производительность и будет проще всего поддерживать. Вам не нужно беспокоиться о масштабировании и о том, что хранилище становится дешевле и дешевле для этого решения.

+0

S3 действительно довольно дешево, и JPG, о которых мы говорим, должны быть в диапазоне KB, а не в MB или GB. Если вы обеспокоены, как упоминает амурманн, выбор подмножества требуемых размеров будет работать очень хорошо - позвольте браузеру изменять размер до требуемых размеров пикселей. –

+0

Спасибо, ребята. Это приложение для изображений для фотографов, поэтому большинство изображений будут приветственными изображениями. Я понимаю, что S3 - лучшее решение для этого, и я счастлив придерживаться этого. Сначала я думал хранить только исходное изображение на S3, а также генерировать и загружать обновленную версию изображений для каждого запроса на использование. Но это будет потреблять больше памяти на сервере, поскольку я использую ImageMagick. Как вы полагаете, лучше всего изменить их все сразу, а затем сохранить в S3. – randika

Смежные вопросы