Module: MicroMagick

Defined in:
lib/micro_magick.rb,
lib/micro_magick/image.rb,
lib/micro_magick/version.rb,
lib/micro_magick/identify_parser.rb

Defined Under Namespace

Classes: IdentifyParser, Image

Constant Summary collapse

Error =
Class.new(StandardError)
NoSuchFile =
Class.new(Error)
MissingBinaries =
Class.new(Error)
ArgumentError =
Class.new(Error)
CorruptImageError =
Class.new(Error)
Geometry =

Aliases to support < v0.0.6

Convert = Image
VERSION =
Gem::Version.new('1.0.1')

Class Method Summary collapse

Class Method Details

.cmd_prefixObject



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/micro_magick.rb', line 50

def self.cmd_prefix
  @cmd_prefix ||= begin
    if system('hash gm 2>&-')
      'gm '
    elsif system('hash convert 2>&-')
      ''
    else
      raise MissingBinaries, 'Please install either GraphicsMagick or ImageMagick'
    end
  end
end

.exec(cmds, return_stdout = false) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/micro_magick.rb', line 62

def self.exec(cmds, return_stdout = false)
  final_cmd = cmd_prefix + cmds.join(' ')
  stdout, stderr, status = Open3.capture3(final_cmd)
  err = stderr.strip
  if err.size > 0 || status != 0
    error = if err =~ /unrecognized option/i
              ArgumentError
            elsif err =~ /corrupt/i
              CorruptImageError
            elsif err =~ /no such file or directory|unable to open/i
              NoSuchFile
            else
              Error
            end
    raise error, "#{final_cmd} failed (#{status}): #{err}"
  end
  return_stdout ? stdout.strip : final_cmd
rescue Errno::ENOENT => e
  raise NoSuchFile, e.message
end

.graphicsmagick?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/micro_magick.rb', line 24

def self.graphicsmagick?
  cmd_prefix == 'gm '
end

.imagemagick?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/micro_magick.rb', line 28

def self.imagemagick?
  !graphicsmagick?
end

.reset!Object



32
33
34
# File 'lib/micro_magick.rb', line 32

def self.reset!
  @cmd_prefix = @verbose_version = @version = nil
end

.use_graphicsmagick!Object



19
20
21
22
# File 'lib/micro_magick.rb', line 19

def self.use_graphicsmagick!
  reset!
  @cmd_prefix = 'gm '
end

.use_imagemagick!Object



14
15
16
17
# File 'lib/micro_magick.rb', line 14

def self.use_imagemagick!
  reset!
  @cmd_prefix = ''
end

.verbose_versionObject



36
37
38
39
40
41
# File 'lib/micro_magick.rb', line 36

def self.verbose_version
  @verbose_version ||= begin
    cmd = graphicsmagick? ? %w(version) : %w(identify --version)
    exec(cmd, true)
  end
end

.versionObject



43
44
45
46
47
48
# File 'lib/micro_magick.rb', line 43

def self.version
  @version ||= begin
    m = verbose_version.split($/, 1).first.match(/([\d\.]{5,})/)
    Gem::Version.new(m[1]) if m
  end
end