我正在使用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)
效果很好 - 我会加载当前图像,为新拇指创建一个“空格”,然后将其放在那里。
但是,我需要创建一个拇指,宽度 110px ,高度会自动计算......怎么做?
谢谢
答案 0 :(得分:0)
您宁可使用resize_to_fill!
答案 1 :(得分: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>")
答案 2 :(得分:0)
事实证明这非常简单! ImageMagick和GraphicsMagick都能正确保持宽高比,因此在您的情况下,只需给出您想要图像的最大宽度。请参阅http://www.imagemagick.org/script/command-line-processing.php#geometry以了解有关magick维度运算符的更多信息。
如果你发现你是ruby进程'RAM消耗正在增长,你可能想要切换到外部执行图像库,如https://github.com/mceachen/micro_magick。此外,切换到GraphicsMagick是一个全方位的胜利,BTW,在更短的时间内提供更好的图像编码。
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")