module MicroMagick

Constants

ArgumentError
CorruptImageError
Error
Geometry

Aliases to support < v0.0.6

MissingBinaries
NoSuchFile
VERSION

Public Class Methods

cmd_prefix() click to toggle source
# 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) click to toggle source
# 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|CRC error/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?() click to toggle source
# File lib/micro_magick.rb, line 24
def self.graphicsmagick?
  cmd_prefix == 'gm '
end
imagemagick?() click to toggle source
# File lib/micro_magick.rb, line 28
def self.imagemagick?
  !graphicsmagick?
end
reset!() click to toggle source
# File lib/micro_magick.rb, line 32
def self.reset!
  @cmd_prefix = @verbose_version = @version = nil
end
use_graphicsmagick!() click to toggle source
# File lib/micro_magick.rb, line 19
def self.use_graphicsmagick!
  reset!
  @cmd_prefix = 'gm '
end
use_imagemagick!() click to toggle source
# File lib/micro_magick.rb, line 14
def self.use_imagemagick!
  reset!
  @cmd_prefix = ''
end
verbose_version() click to toggle source
# 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
version() click to toggle source
# 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