123456789_123456789_123456789_123456789_123456789_

Class: ActiveStorage::Analyzer::ImageAnalyzer

Relationships & Source Files
Namespace Children
Classes:
Extension / Inclusion / Inheritance Descendants
Subclasses:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Inherits: ActiveStorage::Analyzer
Defined in: activestorage/lib/active_storage/analyzer/image_analyzer.rb

Overview

Active Storage Image Analyzer

This is an abstract base class for image analyzers, which extract width and height 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::ImageMagick.new(blob).
# => { width: 4104, height: 2736 }

Class Attribute Summary

::ActiveStorage::Analyzer - Inherited

.analyze_later?

Implement this method in concrete subclasses.

Class Method Summary

::ActiveStorage::Analyzer - Inherited

.accept?

Implement this method in a concrete subclass.

.new

Instance Attribute Summary

Instance Method Summary

::ActiveStorage::Analyzer - Inherited

#metadata

Override this method in a concrete subclass.

#download_blob_to_tempfile

Downloads the blob to a tempfile on disk.

#instrument, #logger, #tmpdir

Constructor Details

This class inherits a constructor from ActiveStorage::Analyzer

Class Method Details

.accept?(blob) ⇒ Boolean

[ GitHub ]

  
# File 'activestorage/lib/active_storage/analyzer/image_analyzer.rb', line 15

def self.accept?(blob)
  blob.image?
end

Instance Method Details

#metadata

[ GitHub ]

  
# File 'activestorage/lib/active_storage/analyzer/image_analyzer.rb', line 19

def 
  read_image do |image|
    if rotated_image?(image)
      { width: image.height, height: image.width }
    else
      { width: image.width, height: image.height }
    end
  end
end