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 オプションで幅と高さを like に増やすことで回避できると考えていました800, 800が、それでも画像がトリミングされます...また、削除しようとしまし:fillたが、私の画像表示されず、コードが壊れるだけです。

4

1 に答える 1

4

Refile wiki を見ると、画像をトリミングする他の方法があることがわかります:こちらを参照してください。

あなたのcssでわかるように、最大​​高さ430pxを探していましたが、画像の高さが430px未満の場合、正確に430pxに拡張しないため、使用するのは論理的ではないと思いますfill。代わりに使用しますlimit

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

ドキュメントが言うように:

limit(画像、幅、高さ) :

元の縦横比を維持しながら、指定された寸法内に収まるように画像のサイズを変更します。指定されたサイズよりも大きい場合にのみ、画像のサイズを変更します。結果のイメージは、いずれかの寸法で指定されたものよりも短くまたは狭くなる可能性がありますが、指定された値より大きくはなりません。

あなたの場合、高さを修正するだけで、幅を任意のサイズにしたいですか?limitのコードを見ると、次のようになります。

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

Refile を使用してImagemagickを使用して画像をトリミングします。私が間違っていなければ、次のようにしてそれを達成できます。

x430          # width = any size, height = 430

limitしたがって、次のように width パラメータをnilに設定するだけでよいと思います。

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

この助けを願っています。

于 2015-07-21T03:02:28.207 に答える