carrierwave:多版本策略

carrierwave: multiple version strategy

我想创建多个版本,例如 :large、:medium、:small。到目前为止没问题。但是这些方法是如何调用的呢?

一个简单的测试:

version :large do
  process :resize_to_fit => [1024, 1024]
end
version :large2, :from_version=>:large do
  process :resize_to_fit => [1024, 1024]
end

生成两个不同大小的文件。我会假设版本是相同的。所以我猜 :large2 正在将文件(大)从磁盘重新读入 RMagick?

我该怎么做"right"? (我会使用相同的 RMagick-Object 来创建版本)我想尝试保持 carriewave 方式而不是自己做太多。

感谢并问候任何提示,Phil。

在 uploader.rb 文件中使用 MiniMagick 使用 Carrierwave 创建 3 个典型图像文件大小的示例

# Create different versions of your uploaded files. 
  version :full do
     process :resize_to_fill => [1024, 1024] 
  end

  version :large_thumb, :from_version => :full do
     process :resize_to_fill => [300, 300] 
  end

  version :thumb, :from_version => :large_thumb do
     process :resize_to_fill => [100, 100] 
  end    

MiniMagick 创建不同尺寸图片时的效率考虑因素

MiniMagick 文档建议处理效率从最大分辨率大小开始并向下工作,级联重新调整大小的文件而不是每次都从大文件开始转换为基本文件https://github.com/carrierwaveuploader/carrierwave)。

Create versions from existing versions

For performance reasons, it is often useful to create versions from existing ones instead of using the original file. If your uploader generates several versions where the next is smaller than the last, it will take less time to generate from a smaller, already processed image.

您可以使用上面示例中显示的 :from_version 指令来执行此操作。

MiniMagick resize_to_fill 与 resize_to_fit、纵横比、缩放

MiniMagick 为您提供各种图像处理选项。我发现 resize_to_fill 比 resize_to_fit 更适合我的目的,但你的里程可能会有所不同。选择图像调整大小选项时需要考虑,尤其是在原始图像的纵横比与调整大小目标图像的纵横比不匹配的情况下

这是包含 MiniMagick 使用的所有图像魔法的 ImageMagick 规范:http://www.imagemagick.org/Usage/resize/#resize

MiniMagick gemspec https://github.com/minimagick/minimagick