Class: Spraycan::Rmagick

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

Constant Summary collapse

VALID_OUTPUT_FORMATS =
%w(JPEG PNG JPG GIF)

Instance Method Summary collapse

Instance Method Details

#crop(image, tl_x, tl_y, br_x, br_y) ⇒ Object



16
17
18
19
20
# File 'lib/spraycan/rmagick.rb', line 16

def crop(image, tl_x, tl_y, br_x, br_y)
  process image do
    crop!(tl_x, tl_y, br_x, br_y)
  end
end

#crop_resize(image, width, height = nil) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/spraycan/rmagick.rb', line 22

def crop_resize(image, width, height = nil)
  width, height = calculate_dimensions(image, width) unless height

  process image do
    crop_resized!(width, height)
  end
end

#exif_data(image) ⇒ Object



45
46
47
48
# File 'lib/spraycan/rmagick.rb', line 45

def exif_data(image)
  data = Magick::Image.from_blob(image).first.get_exif_by_entry
  data.inject({}) { |m, exif_entry| m[exif_entry[0]] = exif_entry[1]; m }
end

#previews(image, previews) ⇒ Object

previews => { :very_small => { :dimensions => 40, :target => “/tmp/spraycan_spec/v_small.thumbnail.image.png” },



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/spraycan/rmagick.rb', line 31

def previews(image, previews)
  previews.each_value do |preview|
    if preview.has_key?(:dimensions)
      preview.merge!(crop_resize(image, preview.delete(:dimensions)))
    else
      preview.merge!(process(image))
    end
  end

  previews.tap do |obj|
    obj[:original] = dimensions(image)
  end
end

#resize(image, width, height = nil) ⇒ Object



8
9
10
11
12
13
14
# File 'lib/spraycan/rmagick.rb', line 8

def resize(image, width, height = nil)
  width, height = calculate_dimensions(image, width) unless height

  process(image) do
    change_geometry("#{width}x#{height}") { |cols, rows, image| image.resize!(cols, rows) }
  end
end

#resized_crop_mask(image, crop, size) ⇒ Object



50
51
52
53
54
55
# File 'lib/spraycan/rmagick.rb', line 50

def resized_crop_mask(image, crop, size)
  process(image) do
    resize!(size[:width], size[:height]) if size[:width] > 0 && size[:height] > 0
    crop!(crop[:x], crop[:y], crop[:width], crop[:height], true) # pass true to clear offset info
  end
end