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

Gemfile 中的宝石顺序有影响吗?

Rails Carrierwave NoMethodError

Carrierwave PNG到JPG转换器。如何避免黑色背景?

无法从 Facebook 载波上传图片