edge badge

Extracts width and height in pixels from an image blob.

If the image contains EXIF data indicating its angle is 90 or 270 degrees, its width and height are swapped for convenience.

Example:

ActiveStorage::Analyzer::ImageAnalyzer.new(blob).metadata
# => { width: 4104, height: 2736 }

This analyzer relies on the third-party MiniMagick gem. MiniMagick requires the ImageMagick system library.

Methods
A
M
Class Public methods
accept?(blob)
# File activestorage/lib/active_storage/analyzer/image_analyzer.rb, line 16
def self.accept?(blob)
  blob.image?
end
Instance Public methods
metadata()
# File activestorage/lib/active_storage/analyzer/image_analyzer.rb, line 20
def metadata
  read_image do |image|
    if rotated_image?(image)
      { width: image.height, height: image.width }
    else
      { width: image.width, height: image.height }
    end
  end
rescue LoadError
  logger.info "Skipping image analysis because the mini_magick gem isn't installed"
  {}
end