spo*_*ong 4 ruby-on-rails imagemagick rails-activestorage ruby-on-rails-5.2
我有一个Ruby on Rails 5.2 RC2应用程序,它使用ActiveStorage来托管图像.特别是它用变体转换图像.
我想传递一个通常为16:9或4:3比例的图像,并将其variant裁剪为特定的比例,宽度x高度,并使其居中.图像可以是水平或垂直的,但新的裁剪尺寸居中.
从Imagemagick命令行选项文档中,我有以下内容:
<%= image_tag @photo.image.variant(extent: "1:1", crop: "800x800").processed.service_url %>
它会创建一个方形裁剪,但它不会居中.它默认为左侧.如何创建以Imagemagick命令行选项为中心的裁剪图像?
我正在寻找适用于任何图像大小或宽高比的解决方案.我相信任何调整大小都会从最初上传的图像中进行创建.
作为参考,我正在寻找升级使用Carrierwave的旧Rails应用程序.有一个resize_to_fill确实如此.示例代码:
version :square_thumb do
process :resize_to_fill => [200,200]
end
用于combine_options同时将gravity和crop选项传递给ImageMagick的mogrify实用程序:
@photo.image.variant(combine_options: { gravity: "center", crop: "800x800" })
Run Code Online (Sandbox Code Playgroud)
您还应该避免直接在视图中处理变体,因为它会阻止渲染.
您需要在某处添加重力设置。在命令行中它将是-重力中心。
范围扩展了画布,我认为你不需要它
尝试:
gravity: "center", crop: "800x800"
Run Code Online (Sandbox Code Playgroud)