Class: Imageproxy::Convert

Inherits:
Command
  • Object
show all
Defined in:
lib/imageproxy/convert.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Convert

Returns a new instance of Convert.



7
8
9
10
11
12
# File 'lib/imageproxy/convert.rb', line 7

def initialize(options)
  @options = options
  if (!(options.resize || options.thumbnail || options.rotate || options.flip || options.format || options.quality))
    raise "Missing action or illegal parameter value"
  end
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



5
6
7
# File 'lib/imageproxy/convert.rb', line 5

def options
  @options
end

Instance Method Details

#convert_optionsObject



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/imageproxy/convert.rb', line 19

def convert_options
  convert_options = []
  convert_options << "-resize #{resize_thumbnail_options(options.resize)}" if options.resize
  convert_options << "-thumbnail #{resize_thumbnail_options(options.thumbnail)}" if options.thumbnail
  convert_options << "-flop" if options.flip == "horizontal"
  convert_options << "-flip" if options.flip == "vertical"
  convert_options << rotate_options if options.rotate
  convert_options << "-colors 256" if options.format == "png8"
  convert_options << "-quality #{options.quality}" if options.quality
  convert_options << interlace_options if options.progressive
  convert_options.join " "
end

#execute(user_agent = nil, timeout = nil) ⇒ Object



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

def execute(user_agent=nil, timeout=nil)
  execute_command %'#{curl options.source, :user_agent => user_agent, :timeout => timeout} | convert - #{convert_options} #{new_format}#{file.path}'
  file
end

#fileObject



70
71
72
# File 'lib/imageproxy/convert.rb', line 70

def file
  @tempfile ||= Tempfile.new("imageproxy").tap(&:close)
end

#interlace_optionsObject



55
56
57
58
59
60
61
62
63
64
# File 'lib/imageproxy/convert.rb', line 55

def interlace_options
  case options.progressive
    when "true"
      "-interlace JPEG"
    when "false"
      "-interlace none"
    else
      ""
  end
end

#new_formatObject



66
67
68
# File 'lib/imageproxy/convert.rb', line 66

def new_format
  options.format ? "#{options.format}:" : ""
end

#resize_thumbnail_options(size) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/imageproxy/convert.rb', line 32

def resize_thumbnail_options(size)
  case options.shape
    when "cut"
      "#{size}^ -gravity center -extent #{size}"
    when "preserve"
      size
    when "pad"
      background = options.background ? %|"#{options.background}"| : %|none -matte|
      "#{size} -background #{background} -gravity center -extent #{size}"
    else
      size
  end
end

#rotate_optionsObject



46
47
48
49
50
51
52
53
# File 'lib/imageproxy/convert.rb', line 46

def rotate_options
  if options.rotate.to_f % 90 == 0
    "-rotate #{options.rotate}"
  else
    background = options.background ? %|"#{options.background}"| : %|none|
    "-background #{background} -matte -rotate #{options.rotate}"
  end
end