/ / RMagick - 自動高さでサムネイルを作成する方法は? - ruby​​-on-rails、ruby、画像処理、imagemagick、rmagick

RMagick - 自動高さでサムネイルを作成する方法は? - ruby​​-on-rails、ruby、画像処理、imagemagick、rmagick

私はこのようなサムネイルを作成するためにRMagickを使用しています:

    img = Magick::Image.read(image_url).first
target = Magick::Image.new(110, 110) do
self.background_color = "white"
end
img.resize_to_fit!(110, 110)
target.composite(img, Magick::CenterGravity, Magick::CopyCompositeOp).write(thumb_path)

これはうまくいく - 私は現在の画像を読み込み、新しい親指のための "スペース"を作成し、そこに配置します。

しかし、私は親指をどこに作成する必要があります幅 110ピクセル 高さは自動的にカウントされます...これを行うには?

ありがとうございました

回答:

回答№1は0

あなたはむしろ resize_to_fill!

ここにDoc


回答№2の場合は0
image = Magick::Image.read(image_url).first
image.format = "JPG"
image.change_geometry!("110X110") { |cols, rows| image.thumbnail! cols, rows }
image.write("<path to save thumbnail>")

回答№3の場合は0

これは非常に簡単であることが判明しました! ImageMagickとGraphicsMagickはどちらもアスペクト比を適切に維持しているので、あなたの場合は、画像に必要な最大幅を与えてください。見る http://www.imagemagick.org/script/command-line-processing.php#geometry magickディメンション演算子の詳細については、

RAMの消費量が増えている場合は、外部のEXEイメージライブラリに切り替えることができます。 https://github.com/mceachen/micro_magick。また、GraphicsMagickに切り替えることは、より良い画像のエンコーディングを短時間で行うことができます。

require "micro_magick"
img = MicroMagick::Convert.new("input.png")
img.resize("110") # this restricts to width, if you want to restrict to height, use "x345"
img.unsharp(1.5) # This runs an "unsharp mask" convolution filter, and is optional
img.write("output.png")