Class: Magick::Image
- Inherits:
-
Object
- Object
- Magick::Image
- Includes:
- Plugin::Thumbnailer::ImageProcessing
- Defined in:
- lib/httpthumbnailer/plugin/thumbnailer.rb
Instance Method Summary collapse
- #downscale(f) ⇒ Object
- #find_downscale_factor(max_width, max_height, factor = 1) ⇒ Object
- #render_on_background(background_color, width = nil, height = nil) ⇒ Object
-
#resize_to_fill(ncols, nrows = nil, gravity = Magick::CenterGravity) ⇒ Object
non coping version.
Methods included from Plugin::Thumbnailer::ImageProcessing
Instance Method Details
#downscale(f) ⇒ Object
429 430 431 |
# File 'lib/httpthumbnailer/plugin/thumbnailer.rb', line 429 def downscale(f) sample(columns / f, rows / f) end |
#find_downscale_factor(max_width, max_height, factor = 1) ⇒ Object
433 434 435 436 437 438 439 440 |
# File 'lib/httpthumbnailer/plugin/thumbnailer.rb', line 433 def find_downscale_factor(max_width, max_height, factor = 1) new_factor = factor * 2 if columns / new_factor > max_width * 2 and rows / new_factor > max_height * 2 find_downscale_factor(max_width, max_height, factor * 2) else factor end end |
#render_on_background(background_color, width = nil, height = nil) ⇒ Object
403 404 405 406 407 408 409 410 411 412 413 414 |
# File 'lib/httpthumbnailer/plugin/thumbnailer.rb', line 403 def render_on_background(background_color, width = nil, height = nil) Magick::Image.new(width || self.columns, height || self.rows) { begin self.background_color = background_color rescue ArgumentError raise Plugin::Thumbnailer::InvalidColorNameError.new(background_color) end self.depth = 8 }.replace do |background| background.composite!(self, Magick::CenterGravity, Magick::OverCompositeOp) end end |
#resize_to_fill(ncols, nrows = nil, gravity = Magick::CenterGravity) ⇒ Object
non coping version
417 418 419 420 421 422 423 424 425 426 427 |
# File 'lib/httpthumbnailer/plugin/thumbnailer.rb', line 417 def resize_to_fill(ncols, nrows = nil, gravity = Magick::CenterGravity) nrows ||= ncols if ncols != columns or nrows != rows scale = [ncols / columns.to_f, nrows / rows.to_f].max resize(scale * columns + 0.5, scale * rows + 0.5).replace do |image| image.crop(gravity, ncols, nrows, true) if ncols != columns or nrows != rows end else crop(gravity, ncols, nrows, true) if ncols != columns or nrows != rows end end |