class ActiveAnalysis::Analyzer::ImageAnalyzer::ImageMagick

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

Public Class Methods

accept?(blob) click to toggle source
# File lib/active_analysis/analyzer/image_analyzer/image_magick.rb, line 9
def self.accept?(blob)
  super && ActiveAnalysis.image_library == :mini_magick
end

Private Instance Methods

opaque?(image) click to toggle source
# File lib/active_analysis/analyzer/image_analyzer/image_magick.rb, line 38
def opaque?(image)
  return true unless image.data["channelDepth"].key?("alpha")

  value = /7.\d/.match?(image.data["version"]) ? 255 : 0
  image.data["channelStatistics"]["alpha"]["mean"] == value
end
read_image() { |image| ... } click to toggle source
# File lib/active_analysis/analyzer/image_analyzer/image_magick.rb, line 14
def read_image
  download_blob_to_tempfile do |file|
    require "mini_magick"
    image = MiniMagick::Image.new(file.path)

    if image.valid?
      yield image
    else
      logger.info "Skipping image analysis because ImageMagick doesn't support the file"
      {}
    end
  end
rescue LoadError
  logger.info "Skipping image analysis because the mini_magick gem isn't installed"
  {}
rescue MiniMagick::Error => error
  logger.error "Skipping image analysis due to an ImageMagick error: #{error.message}"
  {}
end
rotated_image?(image) click to toggle source
# File lib/active_analysis/analyzer/image_analyzer/image_magick.rb, line 34
def rotated_image?(image)
  %w[ RightTop LeftBottom TopRight BottomLeft ].include?(image["%[orientation]"])
end