Sha256: 621bcb3d5c3a588c907256daadfa133278b779e62d59c8c6a4950073f987ac30

Contents?: true

Size: 1.04 KB

Versions: 6

Compression:

Stored size: 1.04 KB

Contents

module Paperclip
  class GeometryDetector
    def initialize(file)
      @file = file
      raise_if_blank_file
    end

    def make
      geometry = GeometryParser.new(geometry_string.strip).make
      geometry || raise(Errors::NotIdentifiedByImageMagickError.new)
    end

    private

    def geometry_string
      begin
        silence_stream(STDERR) do
          Paperclip.run("identify", "-format '%wx%h,%[exif:orientation]' :file", :file => "#{path}[0]")
        end
      rescue Cocaine::ExitStatusError
        ""
      rescue Cocaine::CommandNotFoundError => e
        raise_because_imagemagick_missing
      end
    end

    def path
      @file.respond_to?(:path) ? @file.path : @file
    end

    def raise_if_blank_file
      if path.blank?
        raise Errors::NotIdentifiedByImageMagickError.new("Cannot find the geometry of a file with a blank name")
      end
    end

    def raise_because_imagemagick_missing
      raise Errors::CommandNotFoundError.new("Could not run the `identify` command. Please install ImageMagick.")
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
paperclip-3.5.2 lib/paperclip/geometry_detector_factory.rb
paperclip-3.5.1 lib/paperclip/geometry_detector_factory.rb
paperclip-3.5.0 lib/paperclip/geometry_detector_factory.rb
paperclip-3.4.2 lib/paperclip/geometry_detector_factory.rb
paperclip-3.4.1 lib/paperclip/geometry_detector_factory.rb
paperclip-3.4.0 lib/paperclip/geometry_detector_factory.rb