2

我可以上传多张图片,但我不确定如何自定义图片的大小。

这是我查看图像的方式:

<%= 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,但我的图像不会显示,代码就会中断。

4

1 回答 1

4

如果您查看 Refile wiki,您会发现还有其他方法可以裁剪图像:请参见此处

正如我在您的 css 中看到的那样,您正在寻找 430px 的最大高度,但如果图像高度低于 430px,您不会将其扩展为正好 430px,所以我认为使用它不合逻辑fill,而是我会使用limit

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

正如文档所说:

限制(img,宽度,高度)

调整图像大小以适应指定尺寸,同时保持原始纵横比。仅当图像大于指定尺寸时才会调整图像大小。生成的图像可能比任一维度中指定的更短或更窄,但不会大于指定值。

在您的情况下,您只是想固定高度,并且希望宽度为任意大小,对吗?所以在查看限制代码后,它看起来像这样:

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

Refile 使用Imagemagick裁剪图像,如果我没记错的话,你可以这样做:

x430          # width = any size, height = 430

所以我认为你可以像这样将宽度参数设置limitnil

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

希望这有帮助。

于 2015-07-21T03:02:28.207 回答