Class: GallerySync::ImageScaler

Inherits:
Object
  • Object
show all
Defined in:
lib/gallery_sync/gallery_sync.rb

Class Method Summary collapse

Class Method Details

.scale_image(image) ⇒ Object

Parameters:

  • image

    an in-memory image



452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
# File 'lib/gallery_sync/gallery_sync.rb', line 452

def self.scale_image(image)
  r = {}

  magick_image = Magick::Image.from_blob(image).first
  magick_image.auto_orient!

  # thumb (strip exif metadata to decrease size)
  # ^ means minimum size
  r[:thumb] = magick_image.change_geometry('100x100^') { |w,h,img|
    resized = img.resize(w,h)
    if(w > h)
      # landscape
      resized.crop((w-h)/2,0,h,h)
    else
      # portrait
      resized.crop(0,0,w,w)
    end
  }.strip!.to_blob {
    self.quality = 80
  }

  # medium
  r[:medium] = magick_image.change_geometry('460x460') { |cols, rows, img|
    img.resize(cols, rows)
  }.to_blob { self.quality = 85 }

  # full
  r[:full] = image
  return r
end