1

我有兴趣构建一个基于 Rails 的系统来处理大量照片的显示和组织。这有点像 Flickr,但更小。每张照片都有与之关联的元数据。照片将显示在可选列表和网格视图中。能够在需要时加载图像会很好(因为这可能会加快速度)。

目前,我有一个数据库的测试版本,通过从 assets/images 目录加载图像来工作,但是在显示多个图像(200-600 个图像)时它开始运行缓慢。这是由于我的视图设置方式。我正在使用直接循环在列表和网格布局中显示图像。

我还从全尺寸源图像手动调整缩略图和中等尺寸图像的大小。我正在研究其他调整大小的方法。任何建议在这里也受到赞赏。

由于我不熟悉以这种方式处理图像,有人可以根据设计和实施 Flickr 之类的经验为我指明一个方向吗?

我正在研究以下工具:

  1. 回形针
  2. 附件_fu
  3. 载波
4

2 回答 2

4

我会去任何一天Carrierwave。它非常灵活并且有很多有用的策略。它在 Uploader 类上生成它,并具有所有漂亮且不言自明的功能,例如自动生成缩略图(由您指定)、黑名单、格式化图像、大小限制等;您可以使用它。

Ryan Bates 的 Railscast - http://railscasts.com/episodes/253-carrierwave-file-uploads非常有用,如果您还没有看过的话。

于 2013-05-08T18:12:46.773 回答
1

Paperclip 和 CarrierWave 是完全适合这项工作的工具,您选择的工具将取决于个人喜好。他们都有大量的用户和积极的、持续的发展。区别在于您是否更愿意在单独的类中定义文件上传规则(CarrierWave),或者您是否更愿意在模型中内联定义它们(Paperclip)。

我更喜欢 CarrierWave,但根据使用情况,很明显很多人有不同的感觉。

请注意,对于 200-600 张图像的慢速视图,这两个 gem 都不会做任何事情。这些 gem 仅用于处理图像上传,除此之外对您没有任何帮助。

另请注意,Rails 在处理文件上传和文件下载方面确实非常糟糕,您应该尽可能避免这种情况,让其他服务(cdn、您的 Web 服务器、s3 等)为您处理这些。核心问题是,如果您使用 Rails 处理文件传输,则整个 Web 应用程序进程在传输期间都很忙。(有关此主题的相关讨论,请参阅:Best Ruby on Rails Architecture for Image Heavy App)。

于 2013-05-09T13:34:09.123 回答