class ActiveStorage::Analyzer::ImageAnalyzer::Vips
This analyzer relies on the third-party ruby-vips gem. Ruby-vips requires the libvips system library.
Constants
- ROTATIONS
Public Class Methods
accept?(blob)
click to toggle source
Calls superclass method
ActiveStorage::Analyzer::ImageAnalyzer::accept?
# File lib/active_storage/analyzer/image_analyzer/vips.rb, line 7 def self.accept?(blob) super && ActiveStorage.variant_processor == :vips end
Private Instance Methods
read_image() { |image| ... }
click to toggle source
# File lib/active_storage/analyzer/image_analyzer/vips.rb, line 12 def read_image begin require "ruby-vips" rescue LoadError logger.info "Skipping image analysis because the ruby-vips gem isn't installed" return {} end download_blob_to_tempfile do |file| image = instrument("vips") do ::Vips::Image.new_from_file(file.path, access: :sequential) end if valid_image?(image) yield image else logger.info "Skipping image analysis because Vips doesn't support the file" {} end rescue ::Vips::Error => error logger.error "Skipping image analysis due to an Vips error: #{error.message}" {} end end
rotated_image?(image)
click to toggle source
# File lib/active_storage/analyzer/image_analyzer/vips.rb, line 38 def rotated_image?(image) ROTATIONS === image.get("exif-ifd0-Orientation") rescue ::Vips::Error false end
valid_image?(image)
click to toggle source
# File lib/active_storage/analyzer/image_analyzer/vips.rb, line 44 def valid_image?(image) image.avg true rescue ::Vips::Error false end