Class: Refinery::Image

Inherits:
Core::BaseModel
  • Object
show all
Includes:
Refinery::Images::Validators
Defined in:
app/models/refinery/image.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.per_page(dialog = false, has_size_options = false) ⇒ Object

How many images per page should be displayed?



26
27
28
29
30
31
32
33
34
35
36
# File 'app/models/refinery/image.rb', line 26

def per_page(dialog = false, has_size_options = false)
  if dialog
    unless has_size_options
      Images.pages_per_dialog
    else
      Images.pages_per_dialog_that_have_size_options
    end
  else
    Images.pages_per_admin_index
  end
end

Instance Method Details

#thumbnail(options = {}) ⇒ Object

Get a thumbnail job object given a geometry and whether to strip image profiles and comments.



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'app/models/refinery/image.rb', line 40

def thumbnail(options = {})
  if options.is_a?(String) || options.is_a?(Symbol)
    Refinery.deprecate 'Refinery::Image#thumbnail(geometry)',
                       :when => '2.2',
                       :replacement => 'Refinery::Image#thumbnail(:geometry => value)'
    options = { :geometry => options }
  end

  options = { :geometry => :no_geometry, :strip => true }.merge(options)
  geometry = convert_to_geometry(options[:geometry])
  thumbnail = image
  thumbnail = thumbnail.thumb(geometry) unless geometry.is_a?(Symbol)
  thumbnail = thumbnail.strip if options[:strip]
  thumbnail
end

#thumbnail_dimensions(geometry) ⇒ Object

Intelligently works out dimensions for a thumbnail of this image based on the Dragonfly geometry string.



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'app/models/refinery/image.rb', line 57

def thumbnail_dimensions(geometry)
  geometry = if geometry.is_a?(Symbol) && Refinery::Images.user_image_sizes.keys.include?(geometry)
    Refinery::Images.user_image_sizes[geometry]
  else
    geometry.to_s
  end

  width = original_width = self.image_width.to_f
  height = original_height = self.image_height.to_f
  geometry_width, geometry_height = geometry.split(%r{\#{1,2}|\+|>|!|x}im)[0..1].map(&:to_f)
  if (original_width * original_height > 0) && ::Dragonfly::ImageMagick::Processor::THUMB_GEOMETRY === geometry
    if ::Dragonfly::ImageMagick::Processor::RESIZE_GEOMETRY === geometry
      if geometry !~ %r{\d+x\d+>} || (%r{\d+x\d+>} === geometry && (width > geometry_width.to_f || height > geometry_height.to_f))
        # Try scaling with width factor first. (wf = width factor)
        wf_width = (original_width * geometry_width / width).round
        wf_height = (original_height * geometry_width / width).round

        # Scale with height factor (hf = height factor)
        hf_width = (original_width * geometry_height / height).round
        hf_height = (original_height * geometry_height / height).round

        # Take the highest value that doesn't exceed either axis limit.
        use_wf = wf_width <= geometry_width && wf_height <= geometry_height
        if use_wf && hf_width <= geometry_width && hf_height <= geometry_height
          use_wf = wf_width * wf_height > hf_width * hf_height
        end

        if use_wf
          width = wf_width
          height = wf_height
        else
          width = hf_width
          height = hf_height
        end
      end
    else
      # cropping
      width = geometry_width
      height = geometry_height
    end
  end

  { :width => width.to_i, :height => height.to_i }
end

#titleObject

Returns a titleized version of the filename my_file.jpg returns My File



104
105
106
# File 'app/models/refinery/image.rb', line 104

def title
  CGI::unescape(image_name.to_s).gsub(/\.\w+$/, '').titleize
end