私はこのようなサムネイルを作成するために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!
回答№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")