class TileUp::ImageProcessors::MiniMagick
Public Class Methods
new(logger)
click to toggle source
Calls superclass method
TileUp::ImageProcessor::new
# File lib/tileup/image_processors/mini_magick.rb, line 5 def initialize logger require 'mini_magick' super(logger) end
Public Instance Methods
height(image)
click to toggle source
# File lib/tileup/image_processors/mini_magick.rb, line 14 def height image image.height end
width(image)
click to toggle source
# File lib/tileup/image_processors/mini_magick.rb, line 10 def width image image.width end
Private Instance Methods
crop_and_save_image(image, crop, filename:, extend_crop: false, extend_color: 'none')
click to toggle source
# File lib/tileup/image_processors/mini_magick.rb, line 31 def crop_and_save_image image, crop, filename:, extend_crop: false, extend_color: 'none' logger.verbose "Saving tile: #{crop[:column]}, #{crop[:row]}..." ::MiniMagick::Tool::Convert.new do |convert| convert << mpc(image).path convert.merge! ['-crop', "#{crop[:width]}x#{crop[:height]}+#{crop[:x]}+#{crop[:y]}"] if extend_crop convert.merge! ['-background', extend_color] convert.merge! ['-extent', "#{crop[:width]}x#{crop[:height]}"] end convert << filename end logger.verbose "Saving tile: #{crop[:column]}, #{crop[:row]}... saved" true rescue RuntimeError => e raise e logger.error "Failed to crop image: #{e.message}" return false end
mpc(image)
click to toggle source
# File lib/tileup/image_processors/mini_magick.rb, line 55 def mpc image @mpcs ||= {} @mpcs[image] ||= open_image(image.path).format 'mpc' end
open_image(image_filename)
click to toggle source
# File lib/tileup/image_processors/mini_magick.rb, line 20 def open_image(image_filename) ::MiniMagick::Image.open(image_filename) end
scale_image(image, scale)
click to toggle source
# File lib/tileup/image_processors/mini_magick.rb, line 24 def scale_image image, scale open_image(image.path).resize("#{100.0 * scale}%") rescue RuntimeError => e logger.error "Failed to scale image, are you sure the original image is large enough (#{image.width} x #{image.height})?" return false end