mini_magick 3.7.0 → 4.11.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/mini_magick.rb CHANGED
@@ -1,80 +1,64 @@
1
- require 'tempfile'
2
- require 'subexec'
3
- require 'stringio'
4
- require 'pathname'
5
- require 'shellwords'
6
- require 'mini_magick/command_builder'
7
- require 'mini_magick/errors'
8
- require 'mini_magick/image'
9
- require 'mini_magick/utilities'
1
+ require 'mini_magick/version'
2
+ require 'mini_magick/configuration'
10
3
 
11
4
  module MiniMagick
12
- class << self
13
- attr_accessor :processor
14
- attr_accessor :processor_path
15
- attr_accessor :timeout
16
5
 
17
- ##
18
- # Tries to detect the current processor based if any of the processors exist.
19
- # Mogrify have precedence over gm by default.
20
- #
21
- # === Returns
22
- # * [String] The detected procesor
23
- def choose_processor
24
- if MiniMagick::Utilities.which('mogrify').size > 0
25
- self.processor = 'mogrify'
26
- elsif MiniMagick::Utilities.which('gm').size > 0
27
- self.processor = "gm"
28
- end
29
- end
30
-
31
- ##
32
- # Discovers the imagemagick version based on mogrify's output.
33
- #
34
- # === Returns
35
- # * The imagemagick version
36
- def image_magick_version
37
- @@version ||= Gem::Version.create(`mogrify --version`.split(" ")[2].split("-").first)
38
- end
39
-
40
- ##
41
- # The minimum allowed imagemagick version
42
- #
43
- # === Returns
44
- # * The minimum imagemagick version
45
- def minimum_image_magick_version
46
- @@minimum_version ||= Gem::Version.create("6.6.3")
47
- end
6
+ extend MiniMagick::Configuration
48
7
 
49
- ##
50
- # Checks whether the imagemagick's version is valid
51
- #
52
- # === Returns
53
- # * [Boolean]
54
- def valid_version_installed?
55
- image_magick_version >= minimum_image_magick_version
56
- end
8
+ ##
9
+ # You might want to execute only certain blocks of processing with a
10
+ # different CLI, because for example that CLI does that particular thing
11
+ # faster. After the block CLI resets to its previous value.
12
+ #
13
+ # @example
14
+ # MiniMagick.with_cli :graphicsmagick do
15
+ # # operations that are better done with GraphicsMagick
16
+ # end
17
+ def self.with_cli(cli)
18
+ old_cli = self.cli
19
+ self.cli = cli
20
+ yield
21
+ ensure
22
+ self.cli = old_cli
23
+ end
57
24
 
58
- ##
59
- # Picks the right processor if it isn't set and returns whether it's mogrify or not.
60
- #
61
- # === Returns
62
- # * [Boolean]
63
- def mogrify?
64
- self.choose_processor if self.processor.nil?
25
+ ##
26
+ # Checks whether the CLI used is ImageMagick.
27
+ #
28
+ # @return [Boolean]
29
+ def self.imagemagick?
30
+ cli == :imagemagick
31
+ end
65
32
 
66
- self.processor == 'mogrify'
67
- end
33
+ ##
34
+ # Checks whether the CLI used is ImageMagick 7.
35
+ #
36
+ # @return [Boolean]
37
+ def self.imagemagick7?
38
+ cli == :imagemagick7
39
+ end
68
40
 
69
- ##
70
- # Picks the right processor if it isn't set and returns whether it's graphicsmagick or not.
71
- #
72
- # === Returns
73
- # * [Boolean]
74
- def gm?
75
- self.choose_processor if self.processor.nil?
41
+ ##
42
+ # Checks whether the CLI used is GraphicsMagick.
43
+ #
44
+ # @return [Boolean]
45
+ def self.graphicsmagick?
46
+ cli == :graphicsmagick
47
+ end
76
48
 
77
- self.processor == 'gm'
78
- end
49
+ ##
50
+ # Returns ImageMagick's/GraphicsMagick's version.
51
+ #
52
+ # @return [String]
53
+ def self.cli_version
54
+ output = MiniMagick::Tool::Identify.new(&:version)
55
+ output[/\d+\.\d+\.\d+(-\d+)?/]
79
56
  end
57
+
58
+ class Error < RuntimeError; end
59
+ class Invalid < StandardError; end
60
+
80
61
  end
62
+
63
+ require 'mini_magick/tool'
64
+ require 'mini_magick/image'
metadata CHANGED
@@ -1,92 +1,112 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_magick
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.0
4
+ version: 4.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Corey Johnson
8
8
  - Hampton Catlin
9
9
  - Peter Kieltyka
10
+ - James Miller
11
+ - Thiago Fernandes Massa
12
+ - Janko Marohnić
10
13
  autorequire:
11
14
  bindir: bin
12
15
  cert_chain: []
13
- date: 2013-11-26 00:00:00.000000000 Z
16
+ date: 2020-11-06 00:00:00.000000000 Z
14
17
  dependencies:
15
18
  - !ruby/object:Gem::Dependency
16
- name: subexec
19
+ name: rake
17
20
  requirement: !ruby/object:Gem::Requirement
18
21
  requirements:
19
- - - ~>
22
+ - - ">="
20
23
  - !ruby/object:Gem::Version
21
- version: 0.2.1
22
- type: :runtime
24
+ version: '0'
25
+ type: :development
23
26
  prerelease: false
24
27
  version_requirements: !ruby/object:Gem::Requirement
25
28
  requirements:
26
- - - ~>
29
+ - - ">="
27
30
  - !ruby/object:Gem::Version
28
- version: 0.2.1
31
+ version: '0'
29
32
  - !ruby/object:Gem::Dependency
30
- name: rake
33
+ name: rspec
31
34
  requirement: !ruby/object:Gem::Requirement
32
35
  requirements:
33
- - - '>='
36
+ - - "~>"
37
+ - !ruby/object:Gem::Version
38
+ version: 3.5.0
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - "~>"
44
+ - !ruby/object:Gem::Version
45
+ version: 3.5.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: guard
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
34
51
  - !ruby/object:Gem::Version
35
52
  version: '0'
36
53
  type: :development
37
54
  prerelease: false
38
55
  version_requirements: !ruby/object:Gem::Requirement
39
56
  requirements:
40
- - - '>='
57
+ - - ">="
41
58
  - !ruby/object:Gem::Version
42
59
  version: '0'
43
60
  - !ruby/object:Gem::Dependency
44
- name: test-unit
61
+ name: guard-rspec
45
62
  requirement: !ruby/object:Gem::Requirement
46
63
  requirements:
47
- - - '>='
64
+ - - ">="
48
65
  - !ruby/object:Gem::Version
49
66
  version: '0'
50
67
  type: :development
51
68
  prerelease: false
52
69
  version_requirements: !ruby/object:Gem::Requirement
53
70
  requirements:
54
- - - '>='
71
+ - - ">="
55
72
  - !ruby/object:Gem::Version
56
73
  version: '0'
57
74
  - !ruby/object:Gem::Dependency
58
- name: rspec
75
+ name: posix-spawn
59
76
  requirement: !ruby/object:Gem::Requirement
60
77
  requirements:
61
- - - '>='
78
+ - - ">="
62
79
  - !ruby/object:Gem::Version
63
80
  version: '0'
64
81
  type: :development
65
82
  prerelease: false
66
83
  version_requirements: !ruby/object:Gem::Requirement
67
84
  requirements:
68
- - - '>='
85
+ - - ">="
69
86
  - !ruby/object:Gem::Version
70
87
  version: '0'
71
88
  - !ruby/object:Gem::Dependency
72
- name: mocha
89
+ name: webmock
73
90
  requirement: !ruby/object:Gem::Requirement
74
91
  requirements:
75
- - - '>='
92
+ - - ">="
76
93
  - !ruby/object:Gem::Version
77
94
  version: '0'
78
95
  type: :development
79
96
  prerelease: false
80
97
  version_requirements: !ruby/object:Gem::Requirement
81
98
  requirements:
82
- - - '>='
99
+ - - ">="
83
100
  - !ruby/object:Gem::Version
84
101
  version: '0'
85
- description: ''
102
+ description: Manipulate images with minimal use of memory via ImageMagick / GraphicsMagick
86
103
  email:
87
104
  - probablycorey@gmail.com
88
105
  - hcatlin@gmail.com
89
106
  - peter@nulayer.com
107
+ - bensie@gmail.com
108
+ - thiagown@gmail.com
109
+ - janko.marohnic@gmail.com
90
110
  executables: []
91
111
  extensions: []
92
112
  extra_rdoc_files: []
@@ -94,14 +114,30 @@ files:
94
114
  - MIT-LICENSE
95
115
  - Rakefile
96
116
  - lib/mini_gmagick.rb
97
- - lib/mini_magick/command_builder.rb
98
- - lib/mini_magick/errors.rb
117
+ - lib/mini_magick.rb
118
+ - lib/mini_magick/configuration.rb
99
119
  - lib/mini_magick/image.rb
120
+ - lib/mini_magick/image/info.rb
121
+ - lib/mini_magick/shell.rb
122
+ - lib/mini_magick/tool.rb
123
+ - lib/mini_magick/tool/animate.rb
124
+ - lib/mini_magick/tool/compare.rb
125
+ - lib/mini_magick/tool/composite.rb
126
+ - lib/mini_magick/tool/conjure.rb
127
+ - lib/mini_magick/tool/convert.rb
128
+ - lib/mini_magick/tool/display.rb
129
+ - lib/mini_magick/tool/identify.rb
130
+ - lib/mini_magick/tool/import.rb
131
+ - lib/mini_magick/tool/magick.rb
132
+ - lib/mini_magick/tool/mogrify.rb
133
+ - lib/mini_magick/tool/mogrify_restricted.rb
134
+ - lib/mini_magick/tool/montage.rb
135
+ - lib/mini_magick/tool/stream.rb
100
136
  - lib/mini_magick/utilities.rb
101
137
  - lib/mini_magick/version.rb
102
- - lib/mini_magick.rb
103
138
  homepage: https://github.com/minimagick/minimagick
104
- licenses: []
139
+ licenses:
140
+ - MIT
105
141
  metadata: {}
106
142
  post_install_message:
107
143
  rdoc_options: []
@@ -109,18 +145,17 @@ require_paths:
109
145
  - lib
110
146
  required_ruby_version: !ruby/object:Gem::Requirement
111
147
  requirements:
112
- - - '>='
148
+ - - ">="
113
149
  - !ruby/object:Gem::Version
114
- version: '0'
150
+ version: '2.0'
115
151
  required_rubygems_version: !ruby/object:Gem::Requirement
116
152
  requirements:
117
- - - '>='
153
+ - - ">="
118
154
  - !ruby/object:Gem::Version
119
155
  version: '0'
120
156
  requirements:
121
157
  - You must have ImageMagick or GraphicsMagick installed
122
- rubyforge_project:
123
- rubygems_version: 2.0.3
158
+ rubygems_version: 3.1.4
124
159
  signing_key:
125
160
  specification_version: 4
126
161
  summary: Manipulate images with minimal use of memory via ImageMagick / GraphicsMagick
@@ -1,104 +0,0 @@
1
- module MiniMagick
2
- class CommandBuilder
3
- MOGRIFY_COMMANDS = %w{adaptive-blur adaptive-resize adaptive-sharpen adjoin affine alpha annotate antialias append attenuate authenticate auto-gamma auto-level auto-orient backdrop background bench bias black-point-compensation black-threshold blend blue-primary blue-shift blur border bordercolor borderwidth brightness-contrast cache caption cdl channel charcoal chop clamp clip clip-mask clip-path clone clut coalesce colorize colormap color-matrix colors colorspace combine comment compose composite compress contrast contrast-stretch convolve crop cycle debug decipher deconstruct define delay delete density depth descend deskew despeckle direction displace display dispose dissimilarity-threshold dissolve distort dither draw duplicate edge emboss encipher encoding endian enhance equalize evaluate evaluate-sequence extent extract family features fft fill filter flatten flip floodfill flop font foreground format frame function fuzz fx gamma gaussian-blur geometry gravity green-primary hald-clut help highlight-color iconGeometry iconic identify ift immutable implode insert intent interlace interpolate interline-spacing interword-spacing kerning label lat layers level level-colors limit linear-stretch linewidth liquid-rescale list log loop lowlight-color magnify map mask mattecolor median metric mode modulate monitor monochrome morph morphology mosaic motion-blur name negate noise normalize opaque ordered-dither orient page paint path pause pen perceptible ping pointsize polaroid poly posterize precision preview print process profile quality quantize quiet radial-blur raise random-threshold red-primary regard-warnings region remap remote render repage resample resize respect-parentheses reverse roll rotate sample sampling-factor scale scene screen seed segment selective-blur separate sepia-tone set shade shadow shared-memory sharpen shave shear sigmoidal-contrast silent size sketch smush snaps solarize sparse-color splice spread statistic stegano stereo stretch strip stroke strokewidth style subimage-search swap swirl synchronize taint text-font texture threshold thumbnail tile tile-offset tint title transform transparent transparent-color transpose transverse treedepth trim type undercolor unique-colors units unsharp update verbose version view vignette virtual-pixel visual watermark wave weight white-point white-threshold window window-group write}
4
- IMAGE_CREATION_OPERATORS = %w{canvas caption gradient label logo pattern plasma radial radient rose text tile xc }
5
-
6
- def initialize(tool, *options)
7
- @tool = tool
8
- @args = []
9
- options.each { |arg| push(arg) }
10
- end
11
-
12
- def command
13
- com = "#{@tool} #{args.join(' ')}".strip
14
- com = "#{MiniMagick.processor} #{com}" unless MiniMagick.mogrify?
15
-
16
- com = File.join MiniMagick.processor_path, com unless MiniMagick.processor_path.nil?
17
- com.strip
18
- end
19
-
20
- def escape_string_windows(value)
21
- # For Windows, ^ is the escape char, equivalent to \ in Unix.
22
- escaped = value.gsub(/\^/, '^^').gsub(/>/, '^>')
23
- if escaped !~ /^".+"$/ && escaped.include?("'")
24
- escaped.inspect
25
- else
26
- escaped
27
- end
28
-
29
- end
30
-
31
- def args
32
- if !MiniMagick::Utilities.windows?
33
- @args.map(&:shellescape)
34
- else
35
- @args.map { |arg| escape_string_windows(arg) }
36
- end
37
- end
38
-
39
- # Add each mogrify command in both underscore and dash format
40
- MOGRIFY_COMMANDS.each do |mogrify_command|
41
-
42
- # Example of what is generated here:
43
- #
44
- # def auto_orient(*options)
45
- # add_command("auto-orient", *options)
46
- # self
47
- # end
48
- # alias_method :"auto-orient", :auto_orient
49
-
50
- dashed_command = mogrify_command.to_s.gsub("_","-")
51
- underscored_command = mogrify_command.to_s.gsub("-","_")
52
-
53
- define_method(underscored_command) do |*options|
54
- add_command(__method__.to_s.gsub("_","-"), *options)
55
- self
56
- end
57
- alias_method dashed_command, underscored_command
58
- end
59
-
60
- def format(*options)
61
- raise Error, "You must call 'format' on the image object directly!"
62
- end
63
-
64
- IMAGE_CREATION_OPERATORS.each do |operator|
65
- define_method operator do |*options|
66
- add_creation_operator(__method__.to_s, *options)
67
- self
68
- end
69
- end
70
-
71
- def +(*options)
72
- push(@args.pop.gsub(/^-/, '+'))
73
- if options.any?
74
- options.each do |o|
75
- push o
76
- end
77
- end
78
- end
79
-
80
- def add_command(command, *options)
81
- push "-#{command}"
82
- if options.any?
83
- options.each do |o|
84
- push o
85
- end
86
- end
87
- end
88
-
89
- def add_creation_operator(command, *options)
90
- creation_command = command
91
- if options.any?
92
- options.each do |option|
93
- creation_command << ":#{option}"
94
- end
95
- end
96
- push creation_command
97
- end
98
-
99
- def push(arg)
100
- @args << arg.to_s.strip
101
- end
102
- alias :<< :push
103
- end
104
- end
@@ -1,4 +0,0 @@
1
- module MiniMagick
2
- class Error < RuntimeError; end
3
- class Invalid < StandardError; end
4
- end