CarrierWave + RMagick Square Crop?
Posted
技术标签:
【中文标题】CarrierWave + RMagick Square Crop?【英文标题】:CarrierWave + RMagick Square Crop? 【发布时间】:2013-08-10 21:24:09 【问题描述】:我正在尝试使用 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 也不这样做。我正在查看所有可用的实例方法here。
我希望能够上传任何纵横比和尺寸的图片,并且它会以 200x200 的尺寸输出。
【问题讨论】:
【参考方案1】:终于搞定了!在尝试了一堆不同的自定义图像处理功能和手动裁剪之后,它实际上就像我希望的那样简单......
process :resize_to_fill => [400, 400]
从原始图像的直接中心将其裁剪为 400x400 的正方形。
【讨论】:
请务必在您的上传器中添加/取消注释include CarrierWave::RMagick
以使其正常工作。
另外这里是文档rubydoc.info/gems/carrierwave/0.5.1/CarrierWave/…“调整图像大小以适应指定尺寸,同时保留原始图像的纵横比。 如有必要,请以较大的尺寸裁剪图像。”【参考方案2】:
gbdev,你的回答绝对正确。但要小心!如果要更改 process 参数,则必须停止/重新启动 Rails 服务器。
例如如果您目前有:
process :resize_to_fit => [400, 400]
而你想改成:
process :resize_to_fill => [400, 400]
然后您必须退回您的服务器才能看到更改生效。
请注意,这只适用于该参数散列的 key,而不适用于 value。因此,如果您只是更改尺寸,例如从 800x800 到 400x400,则无需反弹服务器。
【讨论】:
以上是关于CarrierWave + RMagick Square Crop?的主要内容,如果未能解决你的问题,请参考以下文章
CarrierWave::RMagick resize_to_fit 后 PNG 图像质量的损失
未定义的方法`marked_for_destruction?' CarrierWave,RMagick
Rails Carrierwave NoMethodError