CarrierWave + RMagick如何实现图片的正方形裁剪?

4

我正在尝试使用Ruby on Rails,CarrierWave和RMagick来裁剪固定大小的正方形图像。

我已经尝试了以下两种方法,但都没有成功...

version :thumb do
  process :resize_to_fit => [200, 200]
end

并且

version :thumb do
  process :resize_to_limit => [200, 200]
end

resize_to_limit能够根据指定的尺寸来重新调整图片大小,同时保持原有的宽高比例。但是这并不符合要求,而resize_to_fit也不是最佳选择。在这里,我查看了所有可用的实例方法,连接在此处

我希望能够上传任意宽高比和尺寸的图片,并将其调整为200x200。

2个回答

17

终于搞定了!尝试了一堆不同的自定义图片处理函数和手动裁剪,结果发现它其实就像我所希望的那样简单...

process :resize_to_fill => [400, 400]

将原图从正中心裁剪成一个400x400的正方形。


2
请确保在您的上传程序中添加/取消注释 include CarrierWave::RMagick,以使其正常工作。 - scarver2
这里还有文档 http://www.rubydoc.info/gems/carrierwave/0.5.1/CarrierWave/RMagick#resize_to_fill-instance_method “将图像调整大小以适应指定的尺寸,同时保留原始图像的纵横比。如果必要,在较大的维度上裁剪图像。” - everyman

1

gbdev,你的答案是完全正确的。但要注意!如果更改进程参数,则必须停止/重新启动Rails服务器。

例如,如果您当前有:

process :resize_to_fit => [400, 400]

你想要改变为:

process :resize_to_fill => [400, 400]

然后你需要重启服务器才能使更改生效。

请注意,这仅适用于该参数哈希的,而不是。因此,如果您只是简单地更改尺寸,例如从800x800更改为400x400,则无需重启服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接