Module: DynamicImage::ImageProcessor::Transform

Included in:
DynamicImage::ImageProcessor
Defined in:
lib/dynamic_image/image_processor/transform.rb

Instance Method Summary collapse

Instance Method Details

#crop(crop_size, crop_start) ⇒ Object

Crops the image



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/dynamic_image/image_processor/transform.rb', line 7

def crop(crop_size, crop_start)
  return self if crop_start == Vector2d(0, 0) && crop_size == size

  unless valid_crop?(crop_start, crop_size)
    raise DynamicImage::Errors::InvalidTransformation,
          "crop size is out of bounds"
  end

  each_frame do |frame|
    frame.crop(crop_start.x, crop_start.y, crop_size.x, crop_size.y)
  end
end

#resize(new_size) ⇒ Object

Resize the image to a new size.



21
22
23
24
25
26
27
# File 'lib/dynamic_image/image_processor/transform.rb', line 21

def resize(new_size)
  new_size = Vector2d(new_size)
  apply image.thumbnail_image(new_size.x.to_i,
                              height: new_size.y.to_i,
                              crop: :none,
                              size: :both)
end

#rotate(degrees) ⇒ Object

Rotates the image. The rotation must be a multiple of 90 degrees.



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/dynamic_image/image_processor/transform.rb', line 30

def rotate(degrees)
  degrees = degrees.to_i % 360
  return self if degrees.zero?

  if (degrees % 90).nonzero?
    raise DynamicImage::Errors::InvalidTransformation,
          "angle must be a multiple of 90 degrees"
  end

  each_frame { |frame| frame.rotate(degrees) }
end