Railsのアクティブなストレージで画像をリサイズする
私たちは、Ruby on Railsでファイルと操作イメージをアップロードするために、CarrierWaveとPaperclipのような宝石を使用しなければなりませんでした.しかし、我々は現在、レールに組み込まれた素晴らしいライブラリを持っているActive Storage これは私たちのためのハンドルです.
アクティブストレージの設定
まず最初に行うのは、インストールスクリプトを実行して、アクティブなストレージテーブルをデータベースに追加するマイグレーションを作成します.
ファイルのアップロード
すべてのアクティブなストレージのアップロードは、モデルに接続する必要があります.Railsを伝えるには、私たちはメソッドと呼ばれる
画像のサイズ変更
アクティブなストレージについての素晴らしいことは、その場でイメージの新しいバージョンを作成することができますです.これは、Railsがユーザーがそのイメージを要求するまでリサイズを実行しないことを意味します.そして、変換が完了した後に、それは将来の使用のために結果をキャッシュします.
ドキュメントは、どのようなオプションを渡すことができますか
イメージを変換するためのカンニングペーパーです.
参考文献 active_storage/variant.rb Episode Source Code
アクティブストレージの設定
まず最初に行うのは、インストールスクリプトを実行して、アクティブなストレージテーブルをデータベースに追加するマイグレーションを作成します.
$ rails active_storage:install
$ rails db:migrate
ファイルのアップロード
すべてのアクティブなストレージのアップロードは、モデルに接続する必要があります.Railsを伝えるには、私たちはメソッドと呼ばれる
avatar
このモデルでは、ファイルの添付ファイルですhas_one_attached
以下の方法class Post < ApplicationRecord
has_one_attached :avatar
validates :title, presence: true
end
そこからファイルオブジェクトをそのフィールドに渡すことができます.画像のサイズ変更
アクティブなストレージについての素晴らしいことは、その場でイメージの新しいバージョンを作成することができますです.これは、Railsがユーザーがそのイメージを要求するまでリサイズを実行しないことを意味します.そして、変換が完了した後に、それは将来の使用のために結果をキャッシュします.
ドキュメントは、どのようなオプションを渡すことができますか
variant
しかし、ImageProcessing::MiniMagick Documentation .イメージを変換するためのカンニングペーパーです.
<!-- Change the format of the image -->
<%= image_tag @post.avatar.variant(format: :jpg) %>
<!-- Rotate the image 45° -->
<%= image_tag @post.avatar.variant(rotate: [45, background: '#0F0']) %>
<!-- Saver - compress the image -->
<%= image_tag @post.avatar.variant(saver: { quality: 10 }) %>
<!--
resize_and_pad: Image will be resized to 500x500 while keeping the original aspect ratio.
Any remaining space (e.g. if the image was originally 50x10, so will scale up to 500x100) will be filled in with the colour we pick in 'background'
We use Gravity to define where the left over space will be, so "north" will anchor the original image at the top of the new resized image.
-->
<%= image_tag @post.avatar.variant(resize_and_pad: [500, 500, gravity: 'north', background: '#000']) %>
<!--
Resizes the image to fill the specified dimensions while retaining the original aspect ratio.
If necessary, will crop the image in the larger dimension.
-->
<%= image_tag @post.avatar.variant(resize_to_limit: [500, 500]) %>
<!--
Resize the image to fit within the specified dimensions while retaining the aspect ratio of the original image.
-->
<%= image_tag @post.avatar.variant(resize_to_fill: [500, 500, gravity: 'north']) %>
<!--
Resizes the image to fit within the specified dimensions while retaining the original aspect ratio.
Will downsize the image if it's larger than the specified dimensions or upsize if it's smaller.
-->
<%= image_tag @post.avatar.variant(resize_to_fit: [500, 500]) %>
参考文献
Reference
この問題について(Railsのアクティブなストレージで画像をリサイズする), 我々は、より多くの情報をここで見つけました https://dev.to/mikerogers0/resize-images-with-active-storage-in-rails-481nテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol