Sha256: 7d9885a36bcc7494cbab596a35e73ec7e443195c8aa401be672dff3d604e89a1

Contents?: true

Size: 1.18 KB

Versions: 12

Compression:

Stored size: 1.18 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
      orientation = Paperclip.options[:use_exif_orientation] ?
        "%[exif:orientation]" : "1"
      Paperclip.run(
        Paperclip.options[:is_windows] ? "magick identify" : "identify",
        "-format '%wx%h,#{orientation}' :file", {
          file: "#{path}[0]"
        },
        swallow_stderr: true
      )
    rescue Terrapin::ExitStatusError
      ""
    rescue Terrapin::CommandNotFoundError => e
      raise_because_imagemagick_missing
    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

12 entries across 12 versions & 1 rubygems

Version Path
kt-paperclip-7.2.0 lib/paperclip/geometry_detector_factory.rb
kt-paperclip-6.4.2 lib/paperclip/geometry_detector_factory.rb
kt-paperclip-7.1.1 lib/paperclip/geometry_detector_factory.rb
kt-paperclip-7.1.0 lib/paperclip/geometry_detector_factory.rb
kt-paperclip-7.0.1 lib/paperclip/geometry_detector_factory.rb
kt-paperclip-7.0.0 lib/paperclip/geometry_detector_factory.rb
kt-paperclip-6.4.1 lib/paperclip/geometry_detector_factory.rb
kt-paperclip-6.4.0 lib/paperclip/geometry_detector_factory.rb
kt-paperclip-6.3.0 lib/paperclip/geometry_detector_factory.rb
kt-paperclip-6.2.2 lib/paperclip/geometry_detector_factory.rb
kt-paperclip-6.2.1 lib/paperclip/geometry_detector_factory.rb
kt-paperclip-6.2.0 lib/paperclip/geometry_detector_factory.rb