mini_magick 4.12.0 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +558 -0
- data/lib/mini_magick/configuration.rb +35 -132
- data/lib/mini_magick/image/info.rb +7 -58
- data/lib/mini_magick/image.rb +34 -70
- data/lib/mini_magick/shell.rb +19 -45
- data/lib/mini_magick/tool.rb +41 -74
- data/lib/mini_magick/utilities.rb +4 -6
- data/lib/mini_magick/version.rb +2 -2
- data/lib/mini_magick.rb +18 -42
- metadata +20 -63
- data/lib/mini_gmagick.rb +0 -3
- data/lib/mini_magick/tool/animate.rb +0 -14
- data/lib/mini_magick/tool/compare.rb +0 -14
- data/lib/mini_magick/tool/composite.rb +0 -14
- data/lib/mini_magick/tool/conjure.rb +0 -14
- data/lib/mini_magick/tool/convert.rb +0 -14
- data/lib/mini_magick/tool/display.rb +0 -14
- data/lib/mini_magick/tool/identify.rb +0 -14
- data/lib/mini_magick/tool/import.rb +0 -14
- data/lib/mini_magick/tool/magick.rb +0 -14
- data/lib/mini_magick/tool/mogrify.rb +0 -14
- data/lib/mini_magick/tool/mogrify_restricted.rb +0 -15
- data/lib/mini_magick/tool/montage.rb +0 -14
- data/lib/mini_magick/tool/stream.rb +0 -14
data/lib/mini_magick/tool.rb
CHANGED
@@ -2,15 +2,13 @@ require "mini_magick/shell"
|
|
2
2
|
|
3
3
|
module MiniMagick
|
4
4
|
##
|
5
|
-
#
|
6
|
-
#
|
7
|
-
# this class if you want to be closer to the metal and execute ImageMagick
|
8
|
-
# commands directly, but still with a nice Ruby interface.
|
5
|
+
# Class that wraps command-line tools directly, as opposed MiniMagick::Image
|
6
|
+
# which is more high-level.
|
9
7
|
#
|
10
8
|
# @example
|
11
|
-
# MiniMagick
|
12
|
-
#
|
13
|
-
#
|
9
|
+
# MiniMagick.mogrify do |mogrify|
|
10
|
+
# mogrify.resize "500x500"
|
11
|
+
# mogrify << "path/to/image.jpg"
|
14
12
|
# end
|
15
13
|
#
|
16
14
|
class Tool
|
@@ -23,8 +21,7 @@ module MiniMagick
|
|
23
21
|
# executes the command in the end.
|
24
22
|
#
|
25
23
|
# @example
|
26
|
-
#
|
27
|
-
# puts version
|
24
|
+
# puts MiniMagick.identify(&:version)
|
28
25
|
#
|
29
26
|
# @return [MiniMagick::Tool, String] If no block is given, returns an
|
30
27
|
# instance of the tool, if block is given, returns the output of the
|
@@ -46,31 +43,31 @@ module MiniMagick
|
|
46
43
|
|
47
44
|
# @param name [String]
|
48
45
|
# @param options [Hash]
|
49
|
-
# @option options [Boolean] :
|
46
|
+
# @option options [Boolean] :errors Whether to raise errors on non-zero
|
50
47
|
# exit codes.
|
48
|
+
# @option options [Boolean] :warnings Whether to print warnings to stderrr.
|
49
|
+
# @option options [String] :stdin Content to send to standard input stream.
|
51
50
|
# @example
|
52
|
-
# MiniMagick
|
51
|
+
# MiniMagick.identify(errors: false) do |identify|
|
53
52
|
# identify.help # returns exit status 1, which would otherwise throw an error
|
54
53
|
# end
|
55
|
-
def initialize(name, options
|
56
|
-
|
57
|
-
|
58
|
-
@
|
59
|
-
@args = []
|
60
|
-
@whiny = options.is_a?(Hash) ? options.fetch(:whiny, MiniMagick.whiny) : options
|
54
|
+
def initialize(name, **options)
|
55
|
+
@name = name
|
56
|
+
@args = []
|
57
|
+
@options = options
|
61
58
|
end
|
62
59
|
|
63
60
|
##
|
64
61
|
# Executes the command that has been built up.
|
65
62
|
#
|
66
63
|
# @example
|
67
|
-
# mogrify = MiniMagick
|
64
|
+
# mogrify = MiniMagick.mogrify
|
68
65
|
# mogrify.resize("500x500")
|
69
66
|
# mogrify << "path/to/image.jpg"
|
70
67
|
# mogrify.call # executes `mogrify -resize 500x500 path/to/image.jpg`
|
71
68
|
#
|
72
69
|
# @example
|
73
|
-
# mogrify = MiniMagick
|
70
|
+
# mogrify = MiniMagick.mogrify
|
74
71
|
# # build the command
|
75
72
|
# mogrify.call do |stdout, stderr, status|
|
76
73
|
# # ...
|
@@ -80,16 +77,12 @@ module MiniMagick
|
|
80
77
|
#
|
81
78
|
# @return [String] Returns the output of the command
|
82
79
|
#
|
83
|
-
def call(
|
84
|
-
options =
|
85
|
-
|
86
|
-
whiny = args.fetch(0, @whiny)
|
87
|
-
|
88
|
-
options[:whiny] = whiny
|
89
|
-
options[:stderr] = false if block_given?
|
80
|
+
def call(**options)
|
81
|
+
options = @options.merge(options)
|
82
|
+
options[:warnings] = false if block_given?
|
90
83
|
|
91
84
|
shell = MiniMagick::Shell.new
|
92
|
-
stdout, stderr, status = shell.run(command, options)
|
85
|
+
stdout, stderr, status = shell.run(command, **options)
|
93
86
|
yield stdout, stderr, status if block_given?
|
94
87
|
|
95
88
|
stdout.chomp("\n")
|
@@ -101,7 +94,7 @@ module MiniMagick
|
|
101
94
|
# @return [Array<String>]
|
102
95
|
#
|
103
96
|
# @example
|
104
|
-
# mogrify = MiniMagick
|
97
|
+
# mogrify = MiniMagick.mogrify
|
105
98
|
# mogrify.resize "500x500"
|
106
99
|
# mogrify.contrast
|
107
100
|
# mogrify.command #=> ["mogrify", "-resize", "500x500", "-contrast"]
|
@@ -112,31 +105,26 @@ module MiniMagick
|
|
112
105
|
|
113
106
|
##
|
114
107
|
# The executable used for this tool. Respects
|
115
|
-
# {MiniMagick::Configuration#
|
116
|
-
# and {MiniMagick::Configuration#cli_prefix}.
|
108
|
+
# {MiniMagick::Configuration#cli_prefix}.
|
117
109
|
#
|
118
110
|
# @return [Array<String>]
|
119
111
|
#
|
120
112
|
# @example
|
121
|
-
#
|
122
|
-
# identify
|
123
|
-
# identify.executable #=> ["gm", "identify"]
|
113
|
+
# identify = MiniMagick.identify
|
114
|
+
# identify.executable #=> ["magick", "identify"]
|
124
115
|
#
|
125
116
|
# @example
|
126
117
|
# MiniMagick.configure do |config|
|
127
|
-
# config.cli = :graphicsmagick
|
128
118
|
# config.cli_prefix = ['firejail', '--force']
|
129
119
|
# end
|
130
|
-
# identify = MiniMagick
|
131
|
-
# identify.executable #=> ["firejail", "--force", "
|
120
|
+
# identify = MiniMagick.identify
|
121
|
+
# identify.executable #=> ["firejail", "--force", "magick", "identify"]
|
132
122
|
#
|
133
123
|
def executable
|
134
|
-
exe =
|
135
|
-
exe
|
136
|
-
exe
|
137
|
-
exe
|
138
|
-
Array(MiniMagick.cli_prefix).reverse_each { |p| exe.unshift p } if MiniMagick.cli_prefix
|
139
|
-
exe
|
124
|
+
exe = Array(MiniMagick.cli_prefix)
|
125
|
+
exe << "magick" if MiniMagick.imagemagick7? && name != "magick"
|
126
|
+
exe << "gm" if MiniMagick.graphicsmagick
|
127
|
+
exe << name
|
140
128
|
end
|
141
129
|
|
142
130
|
##
|
@@ -163,7 +151,7 @@ module MiniMagick
|
|
163
151
|
# Changes the last operator to its "plus" form.
|
164
152
|
#
|
165
153
|
# @example
|
166
|
-
# MiniMagick
|
154
|
+
# MiniMagick.mogrify do |mogrify|
|
167
155
|
# mogrify.antialias.+
|
168
156
|
# mogrify.distort.+("Perspective", "0,0,4,5 89,0,45,46")
|
169
157
|
# end
|
@@ -181,7 +169,7 @@ module MiniMagick
|
|
181
169
|
# Create an ImageMagick stack in the command (surround.
|
182
170
|
#
|
183
171
|
# @example
|
184
|
-
# MiniMagick
|
172
|
+
# MiniMagick.convert do |convert|
|
185
173
|
# convert << "wand.gif"
|
186
174
|
# convert.stack do |stack|
|
187
175
|
# stack << "wand.gif"
|
@@ -208,7 +196,7 @@ module MiniMagick
|
|
208
196
|
# Adds ImageMagick's pseudo-filename `-` for standard input.
|
209
197
|
#
|
210
198
|
# @example
|
211
|
-
# identify = MiniMagick
|
199
|
+
# identify = MiniMagick.identify
|
212
200
|
# identify.stdin
|
213
201
|
# identify.call(stdin: image_content)
|
214
202
|
# # executes `identify -` with the given standard input
|
@@ -221,7 +209,7 @@ module MiniMagick
|
|
221
209
|
# Adds ImageMagick's pseudo-filename `-` for standard output.
|
222
210
|
#
|
223
211
|
# @example
|
224
|
-
# content = MiniMagick
|
212
|
+
# content = MiniMagick.convert do |convert|
|
225
213
|
# convert << "input.jpg"
|
226
214
|
# convert.auto_orient
|
227
215
|
# convert.stdout
|
@@ -273,35 +261,14 @@ module MiniMagick
|
|
273
261
|
self
|
274
262
|
end
|
275
263
|
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
cli_options = help_page.scan(/^\s+-[a-z\-]+/).map(&:strip)
|
283
|
-
if tool.name == "mogrify" && MiniMagick.graphicsmagick?
|
284
|
-
# These options were undocumented before 2015-06-14 (see gm bug 302)
|
285
|
-
cli_options |= %w[-box -convolve -gravity -linewidth -mattecolor -render -shave]
|
264
|
+
# deprecated tool subclasses
|
265
|
+
%w[animate compare composite conjure convert display identify import magick mogrify montage stream].each do |tool|
|
266
|
+
const_set(tool.capitalize, Class.new(self) {
|
267
|
+
define_method(:initialize) do |*args|
|
268
|
+
super(tool, *args)
|
286
269
|
end
|
287
|
-
|
288
|
-
|
289
|
-
)
|
270
|
+
})
|
271
|
+
deprecate_constant(tool.capitalize)
|
290
272
|
end
|
291
|
-
|
292
273
|
end
|
293
274
|
end
|
294
|
-
|
295
|
-
require "mini_magick/tool/animate"
|
296
|
-
require "mini_magick/tool/compare"
|
297
|
-
require "mini_magick/tool/composite"
|
298
|
-
require "mini_magick/tool/conjure"
|
299
|
-
require "mini_magick/tool/convert"
|
300
|
-
require "mini_magick/tool/display"
|
301
|
-
require "mini_magick/tool/identify"
|
302
|
-
require "mini_magick/tool/import"
|
303
|
-
require "mini_magick/tool/magick"
|
304
|
-
require "mini_magick/tool/mogrify"
|
305
|
-
require "mini_magick/tool/mogrify_restricted"
|
306
|
-
require "mini_magick/tool/montage"
|
307
|
-
require "mini_magick/tool/stream"
|
@@ -24,12 +24,10 @@ module MiniMagick
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def tempfile(extension)
|
27
|
-
Tempfile.new(["mini_magick", extension], MiniMagick.tmpdir
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
27
|
+
tempfile = Tempfile.new(["mini_magick", extension], MiniMagick.tmpdir, binmode: true)
|
28
|
+
yield tempfile if block_given?
|
29
|
+
tempfile.close
|
30
|
+
tempfile
|
32
31
|
end
|
33
|
-
|
34
32
|
end
|
35
33
|
end
|
data/lib/mini_magick/version.rb
CHANGED
data/lib/mini_magick.rb
CHANGED
@@ -1,64 +1,40 @@
|
|
1
1
|
require 'mini_magick/version'
|
2
2
|
require 'mini_magick/configuration'
|
3
|
+
require 'mini_magick/utilities'
|
4
|
+
require 'mini_magick/tool'
|
5
|
+
require 'mini_magick/image'
|
3
6
|
|
4
7
|
module MiniMagick
|
5
8
|
|
6
|
-
|
7
|
-
|
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
|
9
|
+
Error = Class.new(RuntimeError)
|
10
|
+
Invalid = Class.new(StandardError)
|
11
|
+
TimeoutError = Class.new(Error)
|
24
12
|
|
25
|
-
|
26
|
-
# Checks whether the CLI used is ImageMagick.
|
27
|
-
#
|
28
|
-
# @return [Boolean]
|
29
|
-
def self.imagemagick?
|
30
|
-
cli == :imagemagick
|
31
|
-
end
|
13
|
+
extend MiniMagick::Configuration
|
32
14
|
|
33
15
|
##
|
34
|
-
# Checks whether
|
16
|
+
# Checks whether ImageMagick 7 is installed.
|
35
17
|
#
|
36
18
|
# @return [Boolean]
|
37
19
|
def self.imagemagick7?
|
38
|
-
|
20
|
+
return false if graphicsmagick
|
21
|
+
return @imagemagick7 if defined?(@imagemagick7)
|
22
|
+
@imagemagick7 = !!MiniMagick::Utilities.which("magick")
|
39
23
|
end
|
40
24
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
cli == :graphicsmagick
|
25
|
+
%w[animate compare composite conjure convert display identify import mogrify montage stream].each do |tool|
|
26
|
+
define_singleton_method(tool) do |**options, &block|
|
27
|
+
name = imagemagick7? && tool == "convert" ? "magick" : tool
|
28
|
+
MiniMagick::Tool.new(name, **options, &block)
|
29
|
+
end
|
47
30
|
end
|
48
31
|
|
49
32
|
##
|
50
|
-
# Returns ImageMagick
|
33
|
+
# Returns ImageMagick version.
|
51
34
|
#
|
52
35
|
# @return [String]
|
53
36
|
def self.cli_version
|
54
|
-
output = MiniMagick
|
37
|
+
output = MiniMagick.identify(&:version)
|
55
38
|
output[/\d+\.\d+\.\d+(-\d+)?/]
|
56
39
|
end
|
57
|
-
|
58
|
-
class Error < RuntimeError; end
|
59
|
-
class Invalid < StandardError; end
|
60
|
-
|
61
40
|
end
|
62
|
-
|
63
|
-
require 'mini_magick/tool'
|
64
|
-
require 'mini_magick/image'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_magick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Corey Johnson
|
@@ -10,47 +10,18 @@ authors:
|
|
10
10
|
- James Miller
|
11
11
|
- Thiago Fernandes Massa
|
12
12
|
- Janko Marohnić
|
13
|
-
autorequire:
|
14
13
|
bindir: bin
|
15
14
|
cert_chain: []
|
16
|
-
date:
|
15
|
+
date: 2025-02-22 00:00:00.000000000 Z
|
17
16
|
dependencies:
|
18
17
|
- !ruby/object:Gem::Dependency
|
19
|
-
name:
|
20
|
-
requirement: !ruby/object:Gem::Requirement
|
21
|
-
requirements:
|
22
|
-
- - ">="
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: '0'
|
25
|
-
type: :development
|
26
|
-
prerelease: false
|
27
|
-
version_requirements: !ruby/object:Gem::Requirement
|
28
|
-
requirements:
|
29
|
-
- - ">="
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
version: '0'
|
32
|
-
- !ruby/object:Gem::Dependency
|
33
|
-
name: rspec
|
34
|
-
requirement: !ruby/object:Gem::Requirement
|
35
|
-
requirements:
|
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
|
18
|
+
name: logger
|
48
19
|
requirement: !ruby/object:Gem::Requirement
|
49
20
|
requirements:
|
50
21
|
- - ">="
|
51
22
|
- !ruby/object:Gem::Version
|
52
23
|
version: '0'
|
53
|
-
type: :
|
24
|
+
type: :runtime
|
54
25
|
prerelease: false
|
55
26
|
version_requirements: !ruby/object:Gem::Requirement
|
56
27
|
requirements:
|
@@ -58,13 +29,13 @@ dependencies:
|
|
58
29
|
- !ruby/object:Gem::Version
|
59
30
|
version: '0'
|
60
31
|
- !ruby/object:Gem::Dependency
|
61
|
-
name:
|
32
|
+
name: benchmark
|
62
33
|
requirement: !ruby/object:Gem::Requirement
|
63
34
|
requirements:
|
64
35
|
- - ">="
|
65
36
|
- !ruby/object:Gem::Version
|
66
37
|
version: '0'
|
67
|
-
type: :
|
38
|
+
type: :runtime
|
68
39
|
prerelease: false
|
69
40
|
version_requirements: !ruby/object:Gem::Requirement
|
70
41
|
requirements:
|
@@ -72,7 +43,7 @@ dependencies:
|
|
72
43
|
- !ruby/object:Gem::Version
|
73
44
|
version: '0'
|
74
45
|
- !ruby/object:Gem::Dependency
|
75
|
-
name:
|
46
|
+
name: rake
|
76
47
|
requirement: !ruby/object:Gem::Requirement
|
77
48
|
requirements:
|
78
49
|
- - ">="
|
@@ -86,20 +57,20 @@ dependencies:
|
|
86
57
|
- !ruby/object:Gem::Version
|
87
58
|
version: '0'
|
88
59
|
- !ruby/object:Gem::Dependency
|
89
|
-
name:
|
60
|
+
name: rspec
|
90
61
|
requirement: !ruby/object:Gem::Requirement
|
91
62
|
requirements:
|
92
|
-
- - "
|
63
|
+
- - "~>"
|
93
64
|
- !ruby/object:Gem::Version
|
94
|
-
version: '
|
65
|
+
version: '3.5'
|
95
66
|
type: :development
|
96
67
|
prerelease: false
|
97
68
|
version_requirements: !ruby/object:Gem::Requirement
|
98
69
|
requirements:
|
99
|
-
- - "
|
70
|
+
- - "~>"
|
100
71
|
- !ruby/object:Gem::Version
|
101
|
-
version: '
|
102
|
-
description: Manipulate images with minimal use of memory via ImageMagick
|
72
|
+
version: '3.5'
|
73
|
+
description: Manipulate images with minimal use of memory via ImageMagick
|
103
74
|
email:
|
104
75
|
- probablycorey@gmail.com
|
105
76
|
- hcatlin@gmail.com
|
@@ -112,34 +83,21 @@ extensions: []
|
|
112
83
|
extra_rdoc_files: []
|
113
84
|
files:
|
114
85
|
- MIT-LICENSE
|
86
|
+
- README.md
|
115
87
|
- Rakefile
|
116
|
-
- lib/mini_gmagick.rb
|
117
88
|
- lib/mini_magick.rb
|
118
89
|
- lib/mini_magick/configuration.rb
|
119
90
|
- lib/mini_magick/image.rb
|
120
91
|
- lib/mini_magick/image/info.rb
|
121
92
|
- lib/mini_magick/shell.rb
|
122
93
|
- 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
|
136
94
|
- lib/mini_magick/utilities.rb
|
137
95
|
- lib/mini_magick/version.rb
|
138
96
|
homepage: https://github.com/minimagick/minimagick
|
139
97
|
licenses:
|
140
98
|
- MIT
|
141
|
-
metadata:
|
142
|
-
|
99
|
+
metadata:
|
100
|
+
changelog_uri: https://github.com/minimagick/minimagick/releases
|
143
101
|
rdoc_options: []
|
144
102
|
require_paths:
|
145
103
|
- lib
|
@@ -147,16 +105,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
105
|
requirements:
|
148
106
|
- - ">="
|
149
107
|
- !ruby/object:Gem::Version
|
150
|
-
version: '2.
|
108
|
+
version: '2.3'
|
151
109
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
110
|
requirements:
|
153
111
|
- - ">="
|
154
112
|
- !ruby/object:Gem::Version
|
155
113
|
version: '0'
|
156
114
|
requirements:
|
157
|
-
- You must have ImageMagick
|
158
|
-
rubygems_version: 3.
|
159
|
-
signing_key:
|
115
|
+
- You must have ImageMagick installed
|
116
|
+
rubygems_version: 3.6.2
|
160
117
|
specification_version: 4
|
161
|
-
summary: Manipulate images with minimal use of memory via ImageMagick
|
118
|
+
summary: Manipulate images with minimal use of memory via ImageMagick
|
162
119
|
test_files: []
|
data/lib/mini_gmagick.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require "mini_magick/tool/mogrify"
|
2
|
-
|
3
|
-
module MiniMagick
|
4
|
-
class Tool
|
5
|
-
##
|
6
|
-
# @see http://www.imagemagick.org/script/mogrify.php
|
7
|
-
#
|
8
|
-
class MogrifyRestricted < Mogrify
|
9
|
-
def format(*args)
|
10
|
-
fail NoMethodError,
|
11
|
-
"you must call #format on a MiniMagick::Image directly"
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|