class TileUp::ImageProcessors::RMagick
Public Class Methods
new(logger)
click to toggle source
Calls superclass method
TileUp::ImageProcessor::new
# File lib/tileup/image_processors/rmagick.rb, line 5 def initialize logger require 'rmagick' super(logger) end
Public Instance Methods
height(image)
click to toggle source
# File lib/tileup/image_processors/rmagick.rb, line 14 def height image image.rows end
width(image)
click to toggle source
# File lib/tileup/image_processors/rmagick.rb, line 10 def width image image.columns 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/rmagick.rb, line 31 def crop_and_save_image image, crop, filename:, extend_crop: false, extend_color: 'none' cropped_image = image.crop(crop[:x], crop[:y], crop[:width], crop[:height], true) # unless told to do otherwise, extend tiles in the last row and column # if they do not fill an entire tile width and height. needs_extension = cropped_image.columns != crop[:width] || cropped_image.rows != crop[:height] if extend_crop && needs_extension # defaults to white background color, but transparent is probably # a better default for our purposes. cropped_image.background_color = extend_color # fill to width height, start from top left corner. cropped_image = cropped_image.extent(crop[:width], crop[:height], 0, 0) end logger.verbose "Saving tile: #{crop[:column]}, #{crop[:row]}..." cropped_image.write(filename) logger.verbose "Saving tile: #{crop[:column]}, #{crop[:row]}... saved" true rescue RuntimeError => e logger.error "Failed to crop image: #{e.message}" false end
open_image(image_filename)
click to toggle source
# File lib/tileup/image_processors/rmagick.rb, line 20 def open_image(image_filename) ::Magick::Image.read(image_filename).first end
scale_image(image, scale)
click to toggle source
# File lib/tileup/image_processors/rmagick.rb, line 24 def scale_image image, scale image.scale(scale) rescue RuntimeError => e logger.error "Failed to scale image, are you sure the original image is large enough (#{image.columns} x #{image.rows})?" false end