class S3Thumbnail::Generation
Public Class Methods
new(input_file)
click to toggle source
# File lib/s3_thumbnail/generation.rb, line 5 def initialize(input_file) @input_file = input_file end
Public Instance Methods
write(output_file, width, height, quality)
click to toggle source
# File lib/s3_thumbnail/generation.rb, line 9 def write(output_file, width, height, quality) resized = resize_with_crop(image, width, height, quality) resized.write(output_file.path) end
Private Instance Methods
image()
click to toggle source
# File lib/s3_thumbnail/generation.rb, line 16 def image @input_file.rewind MiniMagick::Image.read(@input_file).tap do |i| i.format('jpg') end end
resize_with_crop(img, width, height, quality)
click to toggle source
# File lib/s3_thumbnail/generation.rb, line 23 def resize_with_crop(img, width, height, quality) cols, rows = img[:dimensions] img.combine_options do |cmd| if width != cols || height != rows scale_x = width/cols.to_f scale_y = height/rows.to_f if scale_x >= scale_y cols = (scale_x * (cols + 0.5)).round rows = (scale_x * (rows + 0.5)).round cmd.resize "#{cols}" else cols = (scale_y * (cols + 0.5)).round rows = (scale_y * (rows + 0.5)).round cmd.resize "x#{rows}" end end cmd.quality quality cmd.gravity 'Center' cmd.background "rgba(255,255,255,0.0)" cmd.extent "#{width}x#{height}" if cols != width || rows != height end img end