class VitalsImage::Optimizer::Variable
Public Class Methods
accept?(source)
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 5 def self.accept?(source) source.respond_to?(:variable?) && source.variable? end
Private Instance Methods
alpha?()
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 34 def alpha? @options["alpha"] end
analyzed?()
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 30 def analyzed? metadata[:analyzed] end
dimensions()
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 38 def dimensions if fixed_dimensions? [(requested_width * VitalsImage.resolution).floor, (requested_height * VitalsImage.resolution).floor] elsif VitalsImage.resolution * scale > 1 [original_width, original_height] else [(width * VitalsImage.resolution).floor, (height * VitalsImage.resolution).floor] end end
metadata()
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 26 def metadata @source.metadata end
optimize_generic()
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 75 def optimize_generic if alpha? || !VitalsImage.convert_to_jpeg @source.variant resize else @source.variant resize_and_flatten(VitalsImage.jpeg_conversion) end end
optimize_jpeg()
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 63 def optimize_jpeg @source.variant resize_and_flatten(VitalsImage.jpeg_optimization) end
optimize_png()
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 67 def optimize_png if alpha? || !VitalsImage.convert_to_jpeg @source.variant resize(VitalsImage.png_optimization) else @source.variant resize_and_flatten(VitalsImage.jpeg_conversion) end end
original_height()
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 22 def original_height metadata[:height] end
original_width()
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 18 def original_width metadata[:width] end
resize(defaults = {})
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 88 def resize(defaults = {}) defaults.merge "#{resize_mode}": dimensions end
resize_and_flatten(defaults = {})
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 83 def resize_and_flatten(defaults = {}) resize = resize_mode != :resize_and_pad ? dimensions : dimensions.push(background: [255]) defaults.merge "#{resize_mode}": resize end
resize_mode()
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 48 def resize_mode @options[:resize_mode] || @source.metadata["white_background"] ? :resize_and_pad : :resize_to_fill end
source_url()
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 10 def source_url if analyzed? variant else @source end end
variant()
click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 52 def variant case (@source.content_type) when /jpg|jpeg/ optimize_jpeg when /png/ optimize_png else optimize_generic end end