Class: ArImage
- Inherits:
-
ApplicationRecord
- Object
- ApplicationRecord
- ArImage
- Defined in:
- app/models/ar_image.rb
Overview
Schema information
Collection name: ar_images : Images
_id BSON::ObjectId _id created_at Time created_at updated_at Time updated_at ar_site_id BSON::ObjectId Site id ar_user_id BSON::ObjectId User's id name String ip short String short name text String text size_o String Original image size size_l String Large image size size_m String Medium image size size_s String Small image size
AgileRails module for saving and manipulating images. Images can be saved to local directory only. Settings for output images must be set in settings in site record. Example:
ar_image:
sizes: 900x600,500x400,300x200
location: images
quality: '80'
img_type: webp
To use this module imagemagick tools and mini_magick ruby gem must be installed.
Class Method Summary collapse
-
.all_users ⇒ Object
Return all users that have contributed images.
- .html_code ⇒ Object
Instance Method Summary collapse
- #first_available_image ⇒ Object
-
#offset_lx ⇒ Object
Will return x offset for cropping large image.
-
#offset_lx=(value) ⇒ Object
Will set x offset for cropping large image.
-
#offset_ly ⇒ Object
Will return y offset for cropping large image.
-
#offset_ly=(value) ⇒ Object
Will set y offset for cropping large image.
- #offset_mx ⇒ Object
- #offset_mx=(value) ⇒ Object
- #offset_my ⇒ Object
- #offset_my=(value) ⇒ Object
- #offset_sx ⇒ Object
- #offset_sx=(value) ⇒ Object
- #offset_sy ⇒ Object
- #offset_sy=(value) ⇒ Object
-
#set_original ⇒ Object
checks that image size values are in correct format.
-
#size_ls ⇒ Object
Will return size for large image.
-
#size_ls=(value) ⇒ Object
Will set new size for large image.
- #size_ms ⇒ Object
- #size_ms=(value) ⇒ Object
- #size_ss ⇒ Object
- #size_ss=(value) ⇒ Object
-
#validate_image_values ⇒ Object
checks that image size values are in correct format.
Class Method Details
.all_users ⇒ Object
Return all users that have contributed images
184 185 186 |
# File 'app/models/ar_image.rb', line 184 def self.all_users ArUser.where(:id.in => distinct(:created_by)).order(name: 'asc').map { [_1.name, _1.id] } end |
.html_code ⇒ Object
188 189 190 |
# File 'app/models/ar_image.rb', line 188 def self.html_code 'code' end |
Instance Method Details
#first_available_image ⇒ Object
86 87 88 89 |
# File 'app/models/ar_image.rb', line 86 def first_available_image image = %w[o s m l].find { send("size_#{_1}").present? } image ? "#{id}-#{image}.#{img_type}" : nil end |
#offset_lx ⇒ Object
Will return x offset for cropping large image
108 109 110 |
# File 'app/models/ar_image.rb', line 108 def offset_lx size_l.blank? ? '' : size_l.split(/x|\+/)[2].to_i end |
#offset_lx=(value) ⇒ Object
Will set x offset for cropping large image
115 116 117 |
# File 'app/models/ar_image.rb', line 115 def offset_lx=(value) self.size_l += (size_l.blank? ? '' : "+#{value}") end |
#offset_ly ⇒ Object
Will return y offset for cropping large image
122 123 124 |
# File 'app/models/ar_image.rb', line 122 def offset_ly size_l.blank? ? '' : size_l.split(/x|\+/)[3].to_i end |
#offset_ly=(value) ⇒ Object
Will set y offset for cropping large image
129 130 131 |
# File 'app/models/ar_image.rb', line 129 def offset_ly=(value) self.size_l += (size_l.blank? ? '' : "+#{value}") end |
#offset_mx ⇒ Object
141 142 143 |
# File 'app/models/ar_image.rb', line 141 def offset_mx size_m.blank? ? '' : size_m.split(/x|\+/)[2].to_i end |
#offset_mx=(value) ⇒ Object
145 146 147 |
# File 'app/models/ar_image.rb', line 145 def offset_mx=(value) self.size_m += (size_m.blank? ? '' : "+#{value}") end |
#offset_my ⇒ Object
149 150 151 |
# File 'app/models/ar_image.rb', line 149 def offset_my size_m.blank? ? '' : size_m.split(/x|\+/)[3].to_i end |
#offset_my=(value) ⇒ Object
153 154 155 |
# File 'app/models/ar_image.rb', line 153 def offset_my=(value) self.size_m += (size_m.blank? ? '' : "+#{value}") end |
#offset_sx ⇒ Object
165 166 167 |
# File 'app/models/ar_image.rb', line 165 def offset_sx size_s.blank? ? '' : size_s.split(/x|\+/)[2].to_i end |
#offset_sx=(value) ⇒ Object
169 170 171 |
# File 'app/models/ar_image.rb', line 169 def offset_sx=(value) self.size_s += (size_s.blank? ? '' : "+#{value}") end |
#offset_sy ⇒ Object
173 174 175 |
# File 'app/models/ar_image.rb', line 173 def offset_sy size_s.blank? ? '' : size_s.split(/x|\+/)[3].to_i end |
#offset_sy=(value) ⇒ Object
177 178 179 |
# File 'app/models/ar_image.rb', line 177 def offset_sy=(value) self.size_s += (size_s.blank? ? '' : "+#{value}") end |
#set_original ⇒ Object
checks that image size values are in correct format. Must be hsizevsize (ex. 300x200)
61 62 63 64 65 66 67 68 69 70 |
# File 'app/models/ar_image.rb', line 61 def set_original if keep_original if size_o.blank? image = MiniMagick::Image.open(name) self.size_o = "#{image.width}x#{image.height}" end else self.size_o = '' end end |
#size_ls ⇒ Object
Will return size for large image
94 95 96 |
# File 'app/models/ar_image.rb', line 94 def size_ls size_l.blank? ? '' : size_l.split(/x|\+/)[0, 2].join('x') end |
#size_ls=(value) ⇒ Object
Will set new size for large image
101 102 103 |
# File 'app/models/ar_image.rb', line 101 def size_ls=(value) self.size_l = value.blank? ? '' : value end |
#size_ms ⇒ Object
133 134 135 |
# File 'app/models/ar_image.rb', line 133 def size_ms size_m.blank? ? '' : size_m.split(/x|\+/)[0, 2].join('x') end |
#size_ms=(value) ⇒ Object
137 138 139 |
# File 'app/models/ar_image.rb', line 137 def size_ms=(value) self.size_m = value.blank? ? '' : value end |
#size_ss ⇒ Object
157 158 159 |
# File 'app/models/ar_image.rb', line 157 def size_ss size_s.blank? ? '' : size_s.split(/x|\+/)[0, 2].join('x') end |
#size_ss=(value) ⇒ Object
161 162 163 |
# File 'app/models/ar_image.rb', line 161 def size_ss=(value) self.size_s = value.blank? ? '' : value end |
#validate_image_values ⇒ Object
checks that image size values are in correct format. Must be hsizevsize (ex. 300x200)
75 76 77 78 79 80 81 82 83 84 |
# File 'app/models/ar_image.rb', line 75 def validate_image_values %w[l m s o].each do |size| field = "size_#{size}" value = send(field) next if value.blank? a = value.strip.split(/x|\+/) a[0, 2].each { |e| errors.add(field, I18n.t('agile.not_valid')) unless e.to_i > 0 } end end |