Ruby on rails:使用Refile Gem,显示图像而不会裁剪或扭曲图像

时间:2015-07-21 00:36:26

标签: ruby-on-rails ruby image ruby-on-rails-4 refile

我可以上传多张图片,但我不确定如何自定义图片尺寸。

这就是我查看图片的方式:

<%= attachment_image_tag(image, :file, :fill, 300, 300) %>

:fill:裁剪图片

300, 300:是高度和宽度

在重新制作之前,我已经对图像的来源进行了硬编码,然后我使用这个CSS来修复图像的大小。

img {
  display:block;
  max-height: 430px;
  max-width: 100%;
  width:auto;
  height:auto;
}

我希望整个高度保持一致,但宽度可以是任何尺寸,不会被扭曲或裁剪。

在这篇文章发表时,我想我可以通过将refile attachment_image_tag选项中的宽度和高度增加到类似800, 800的方式来逃避,但它仍会裁剪图像......此外,我试过了摆脱:fill,但我的图像不会显示,代码就会中断。

1 个答案:

答案 0 :(得分:4)

如果您查看Refile wiki,您会发现还有其他方法可以裁剪图像:see here

正如我在你的CSS中看到的那样,你正在寻找最大高度为430px,但如果图像高度低于430px,你就不会将它扩展到430px,所以我认为使用{{1}是不合逻辑的而我会使用fill

limit

正如文件所说:

限制(img,宽度,高度)

  

调整图像大小以适应指定的尺寸   保留原始宽高比。只会调整图像大小   大于指定的尺寸。得到的图像可能是   比任一维度中指定的更短或更窄但不会   大于指定值。

在你的情况下,你只是想要修正高度,你希望宽度是任何尺寸吗?所以在查看limit的代码后,它看起来像这样:

<%= attachment_image_tag(image, :file, :limit, 300, 300) %>

重新使用 Imagemagick 裁剪图像,如果我没有错,你可以做到这样做:

def limit(img, width, height)
  img.resize "#{width}x#{height}>"
end

所以我认为你可以像这样设置x430 # width = any size, height = 430 nil 的宽度参数:

limit

希望得到这个帮助。