require 'RMagick' maxwidth = 120 maxheight = 160 aspectratio = maxwidth.to_f / maxheight.to_f imgfile = 'world' pic = Magick::Image.read(imgfile + '.jpg').first imgwidth = pic.columns imgheight = pic.rows imgratio = imgwidth.to_f / imgheight.to_f imgratio > aspectratio ? scaleratio = maxwidth.to_f / imgwidth : scaleratio = maxheight.to_f / imgheight thumb = pic.resize(scaleratio) white_bg = Magick::Image.new(maxwidth, thumb.height) pic = white_bg.composite(thumb, Magick::CenterGravity, Magick::OverCompositeOp) pic.write(imgfile + '.thumb.jpg')
it should fit right in where you have
thumb = pic.resize(scaleratio)
white_bg = Magick::Image.new(maxwidth, thumb.height)
should be
white_bg = Magick::Image.new(maxwidth, thumb.rows)