class Imagetools::Imageresizer
Public Class Methods
get_image_files(argv)
click to toggle source
# File lib/imagetools/imageresizer.rb, line 34 def self.get_image_files(argv) image_files = [] argv.each do |arg| arg = File.expand_path(arg) if FileTest.file?(arg) && (arg =~ /\.jpe?g$/i || arg =~ /\.png/i) image_files << arg end end image_files end
new(opts)
click to toggle source
# File lib/imagetools/imageresizer.rb, line 45 def initialize(opts) @opts = opts end
run(argv)
click to toggle source
# File lib/imagetools/imageresizer.rb, line 9 def self.run(argv) STDOUT.sync = true opts = {} opt = OptionParser.new(argv) opt.banner = "Usage: #{opt.program_name} [-h|--help] <args>" opt.version = VERSION opt.separator('') opt.separator("Options:") opt.on_head('-h', '--help', 'Show this message') do |v| puts opt.help exit end opt.on('-v', '--verbose', 'Verbose message') {|v| opts[:v] = v} opt.on('--dry-run', 'Message only') {|v| opts[:dry_run] = v} opt.on('-o OUTNAME', '--output=OUTNAME', 'Output file') {|v| opts[:o] = v} opt.parse!(argv) image_files = get_image_files(argv) if image_files.size < 1 puts opt.help exit end command = Imageresizer.new(opts) command.run(image_files[0]) end
Public Instance Methods
run(image_file)
click to toggle source
# File lib/imagetools/imageresizer.rb, line 49 def run(image_file) imgdata = File.binread(image_file) resultdata = center_and_pad(imgdata, 960, 640, 'white', ::Magick::CenterGravity) outpath = @opts[:o] || 'image.png' puts "write to #{outpath}" File.binwrite("image.png", resultdata) end
Private Instance Methods
center_and_pad(imgdata, width, height, background=:transparent, gravity=::Magick::CenterGravity)
click to toggle source
# File lib/imagetools/imageresizer.rb, line 59 def center_and_pad(imgdata, width, height, background=:transparent, gravity=::Magick::CenterGravity) img = Magick::Image.from_blob(imgdata).first img = img.resize_to_fit(600, 600) new_img = ::Magick::Image.new(width, height) if background == :transparent filled = new_img.matte_floodfill(1, 1) else filled = new_img.color_floodfill(1, 1, ::Magick::Pixel.from_color(background)) end filled.composite!(img, gravity, ::Magick::OverCompositeOp) # destroy_image(img) # filled = yield(filled) if block_given? # filled # filled.write new_img_path filled.format = "png" filled.to_blob end