Module: ImageManipulation

Extended by:
ActiveSupport::Concern
Included in:
StorageImageProcessing
Defined in:
app/models/concerns/image_manipulation.rb

Instance Method Summary collapse

Instance Method Details

#crop_image(src, dest, x0 = 0, y0 = 0, w = 100, h = 100, scale = 1) ⇒ Object

IMAGE CROP



51
52
53
54
55
56
57
58
59
60
61
62
# File 'app/models/concerns/image_manipulation.rb', line 51

def crop_image src, dest, x0 = 0, y0 = 0, w = 100, h = 100, scale = 1
  image = MiniMagick::Image.open src

  x_shift = (x0.to_f * scale).to_i
  y_shift = (y0.to_f * scale).to_i

  w = (w.to_f * scale).to_i
  h = (h.to_f * scale).to_i

  image.crop "#{w}x#{h}+#{x_shift}+#{y_shift}"
  image.write dest  
end

#landscape?(image) ⇒ Boolean

HELPERS

Returns:

  • (Boolean)


5
6
7
# File 'app/models/concerns/image_manipulation.rb', line 5

def landscape? image
  image[:width] > image[:height]
end

#portrait?(image) ⇒ Boolean

Returns:

  • (Boolean)


9
10
11
# File 'app/models/concerns/image_manipulation.rb', line 9

def portrait? image
  image[:width] < image[:height]
end

#resize_to_larger_side(image, side_size) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'app/models/concerns/image_manipulation.rb', line 34

def resize_to_larger_side image, side_size
  if image[:width] > side_size.to_i
    landscape?(image)             ?
    image.resize("#{side_size}x") :
    image.resize("x#{side_size}")
  end

  image
end

#resize_to_larger_side!(src, side_size) ⇒ Object



44
45
46
47
48
# File 'app/models/concerns/image_manipulation.rb', line 44

def resize_to_larger_side! src, side_size
  image = MiniMagick::Image.open(src)
  image = resize_to_larger_side(image, side_size)
  image.write src
end

#rotate_attached_image(angle) ⇒ Object



20
21
22
23
24
# File 'app/models/concerns/image_manipulation.rb', line 20

def rotate_attached_image angle
  src = path
  rotate_image(src,src,angle)
  refresh_base_image
end

#rotate_image(src, dest, angle) ⇒ Object

Fu



14
15
16
17
18
# File 'app/models/concerns/image_manipulation.rb', line 14

def rotate_image src, dest, angle
  img = MiniMagick::Image.open(src)
  img.rotate(angle)
  img.write(dest)
end

#rotate_leftObject



26
27
28
# File 'app/models/concerns/image_manipulation.rb', line 26

def rotate_left
  rotate_attached_image "-90"
end

#rotate_rightObject



30
31
32
# File 'app/models/concerns/image_manipulation.rb', line 30

def rotate_right
  rotate_attached_image "90"
end