mini_magick 3.8.1 → 4.0.0.rc
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of mini_magick might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/lib/mini_gmagick.rb +2 -1
- data/lib/mini_magick.rb +43 -65
- data/lib/mini_magick/configuration.rb +136 -0
- data/lib/mini_magick/image.rb +356 -336
- data/lib/mini_magick/image/info.rb +104 -0
- data/lib/mini_magick/logger.rb +40 -0
- data/lib/mini_magick/shell.rb +46 -0
- data/lib/mini_magick/tool.rb +233 -0
- data/lib/mini_magick/tool/animate.rb +14 -0
- data/lib/mini_magick/tool/compare.rb +14 -0
- data/lib/mini_magick/tool/composite.rb +14 -0
- data/lib/mini_magick/tool/conjure.rb +14 -0
- data/lib/mini_magick/tool/convert.rb +14 -0
- data/lib/mini_magick/tool/display.rb +14 -0
- data/lib/mini_magick/tool/identify.rb +14 -0
- data/lib/mini_magick/tool/import.rb +14 -0
- data/lib/mini_magick/tool/mogrify.rb +14 -0
- data/lib/mini_magick/tool/montage.rb +14 -0
- data/lib/mini_magick/tool/stream.rb +14 -0
- data/lib/mini_magick/utilities.rb +23 -50
- data/lib/mini_magick/version.rb +6 -6
- data/spec/fixtures/animation.gif +0 -0
- data/spec/fixtures/default.jpg +0 -0
- data/spec/fixtures/exif.jpg +0 -0
- data/spec/fixtures/image.psd +0 -0
- data/spec/fixtures/not_an_image.rb +1 -0
- data/spec/lib/mini_magick/configuration_spec.rb +66 -0
- data/spec/lib/mini_magick/image_spec.rb +318 -410
- data/spec/lib/mini_magick/shell_spec.rb +66 -0
- data/spec/lib/mini_magick/tool_spec.rb +90 -0
- data/spec/lib/mini_magick/utilities_spec.rb +17 -0
- data/spec/lib/mini_magick_spec.rb +23 -47
- data/spec/spec_helper.rb +17 -25
- data/spec/support/helpers.rb +37 -0
- metadata +42 -76
- data/lib/mini_magick/command_builder.rb +0 -94
- data/lib/mini_magick/errors.rb +0 -4
- data/spec/files/actually_a_gif.jpg +0 -0
- data/spec/files/animation.gif +0 -0
- data/spec/files/composited.jpg +0 -0
- data/spec/files/erroneous.jpg +0 -0
- data/spec/files/layers.psd +0 -0
- data/spec/files/leaves (spaced).tiff +0 -0
- data/spec/files/not_an_image.php +0 -1
- data/spec/files/png.png +0 -0
- data/spec/files/simple-minus.gif +0 -0
- data/spec/files/simple.gif +0 -0
- data/spec/files/trogdor.jpg +0 -0
- data/spec/files/trogdor_capitalized.JPG +0 -0
- data/spec/lib/mini_magick/command_builder_spec.rb +0 -153
@@ -1,94 +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 if MiniMagick.processor_path
|
17
|
-
com.strip
|
18
|
-
end
|
19
|
-
|
20
|
-
def args
|
21
|
-
@args.map { |arg| Utilities.escape(arg) }
|
22
|
-
end
|
23
|
-
|
24
|
-
# Add each mogrify command in both underscore and dash format
|
25
|
-
MOGRIFY_COMMANDS.each do |mogrify_command|
|
26
|
-
|
27
|
-
# Example of what is generated here:
|
28
|
-
#
|
29
|
-
# def auto_orient(*options)
|
30
|
-
# add_command("auto-orient", *options)
|
31
|
-
# self
|
32
|
-
# end
|
33
|
-
# alias_method :"auto-orient", :auto_orient
|
34
|
-
|
35
|
-
dashed_command = mogrify_command.to_s.gsub('_', '-')
|
36
|
-
underscored_command = mogrify_command.to_s.gsub('-', '_')
|
37
|
-
|
38
|
-
define_method(underscored_command) do |*options|
|
39
|
-
options[1] = Utilities.windows_escape(options[1]) if mogrify_command == 'annotate'
|
40
|
-
add_command(__method__.to_s.gsub('_', '-'), *options)
|
41
|
-
self
|
42
|
-
end
|
43
|
-
|
44
|
-
alias_method dashed_command, underscored_command
|
45
|
-
alias_method "mogrify_#{underscored_command}", underscored_command
|
46
|
-
end
|
47
|
-
|
48
|
-
def format(*options)
|
49
|
-
fail Error, "You must call 'format' on the image object directly!"
|
50
|
-
end
|
51
|
-
|
52
|
-
IMAGE_CREATION_OPERATORS.each do |operator|
|
53
|
-
define_method operator do |*options|
|
54
|
-
add_creation_operator(__method__.to_s, *options)
|
55
|
-
self
|
56
|
-
end
|
57
|
-
|
58
|
-
alias_method "operator_#{operator}", operator
|
59
|
-
end
|
60
|
-
|
61
|
-
(MOGRIFY_COMMANDS & IMAGE_CREATION_OPERATORS).each do |command_or_operator|
|
62
|
-
define_method command_or_operator do |*options|
|
63
|
-
if @tool == 'mogrify'
|
64
|
-
method = self.method("mogrify_#{command_or_operator}")
|
65
|
-
else
|
66
|
-
method = self.method("operator_#{command_or_operator}")
|
67
|
-
end
|
68
|
-
method.call(*options)
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
|
73
|
-
def +(*options)
|
74
|
-
push(@args.pop.gsub(/\A-/, '+'))
|
75
|
-
options.to_a.each { |option| push(option) }
|
76
|
-
end
|
77
|
-
|
78
|
-
def add_command(command, *options)
|
79
|
-
push "-#{command}"
|
80
|
-
options.to_a.each { |option| push(option) }
|
81
|
-
end
|
82
|
-
|
83
|
-
def add_creation_operator(command, *options)
|
84
|
-
creation_command = command
|
85
|
-
options.to_a.each { |option| creation_command << ":#{option}" }
|
86
|
-
push creation_command
|
87
|
-
end
|
88
|
-
|
89
|
-
def push(arg)
|
90
|
-
@args << arg.to_s.strip
|
91
|
-
end
|
92
|
-
alias_method :<<, :push
|
93
|
-
end
|
94
|
-
end
|
data/lib/mini_magick/errors.rb
DELETED
Binary file
|
data/spec/files/animation.gif
DELETED
Binary file
|
data/spec/files/composited.jpg
DELETED
Binary file
|
data/spec/files/erroneous.jpg
DELETED
Binary file
|
data/spec/files/layers.psd
DELETED
Binary file
|
Binary file
|
data/spec/files/not_an_image.php
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
<?php I am so not an image ?>
|
data/spec/files/png.png
DELETED
Binary file
|
data/spec/files/simple-minus.gif
DELETED
Binary file
|
data/spec/files/simple.gif
DELETED
Binary file
|
data/spec/files/trogdor.jpg
DELETED
Binary file
|
Binary file
|
@@ -1,153 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
# All tests tagged as `ported` are ported from
|
4
|
-
# testunit tests and are there for backwards compatibility
|
5
|
-
|
6
|
-
MiniMagick.processor = :mogrify
|
7
|
-
|
8
|
-
describe MiniMagick::CommandBuilder do
|
9
|
-
before do
|
10
|
-
@processor = MiniMagick.processor
|
11
|
-
@processor_path = MiniMagick.processor_path
|
12
|
-
end
|
13
|
-
|
14
|
-
after do
|
15
|
-
MiniMagick.processor_path = @processor_path
|
16
|
-
MiniMagick.processor = @processor
|
17
|
-
end
|
18
|
-
|
19
|
-
describe 'ported from testunit', :ported => true do
|
20
|
-
let(:builder) { described_class.new('test') }
|
21
|
-
|
22
|
-
it 'builds a basic command' do
|
23
|
-
builder.resize '30x40'
|
24
|
-
expect(builder.args.join(' ')).to eq '-resize 30x40'
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'builds a full command' do
|
28
|
-
builder.resize '30x40'
|
29
|
-
expect(builder.command).to eq 'test -resize 30x40'
|
30
|
-
end
|
31
|
-
|
32
|
-
describe 'windows only', :if => MiniMagick::Utilities.windows? do
|
33
|
-
it 'builds a complicated command' do
|
34
|
-
builder.resize '30x40'
|
35
|
-
builder.alpha '1 3 4'
|
36
|
-
builder.resize 'mome fingo'
|
37
|
-
expect(builder.args.join(' ')).to eq '-resize 30x40 -alpha 1 3 4 -resize mome fingo'
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'builds a command with multiple options and plus modifier' do
|
41
|
-
builder.distort.+ 'srt', '0.6 20'
|
42
|
-
expect(builder.args.join(' ')).to eq '+distort srt 0.6 20'
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'sets a colorspace correctly' do
|
46
|
-
builder.set 'colorspace RGB'
|
47
|
-
expect(builder.command).to eq 'test -set colorspace RGB'
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
describe 'not windows', :if => !MiniMagick::Utilities.windows? do
|
52
|
-
it 'builds a complicated command' do
|
53
|
-
builder.resize '30x40'
|
54
|
-
builder.alpha '1 3 4'
|
55
|
-
builder.resize 'mome fingo'
|
56
|
-
expect(builder.args.join(' ')).to eq '-resize 30x40 -alpha 1\ 3\ 4 -resize mome\ fingo'
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'sets a colorspace correctly' do
|
60
|
-
builder.set 'colorspace RGB'
|
61
|
-
expect(builder.command).to eq 'test -set colorspace\ RGB'
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'builds a command with multiple options and plus modifier' do
|
65
|
-
builder.distort.+ 'srt', '0.6 20'
|
66
|
-
expect(builder.args.join(' ')).to eq '\+distort srt 0.6\ 20'
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe 'common verbs between morgify and image creation operators' do
|
71
|
-
context 'mogrify' do
|
72
|
-
let(:builder) { described_class.new('mogrify') }
|
73
|
-
|
74
|
-
it 'builds the command' do
|
75
|
-
builder.caption 'caption_text'
|
76
|
-
expect(builder.command).to eq 'mogrify -caption caption_text'
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
context 'other' do
|
81
|
-
it 'builds the command' do
|
82
|
-
builder.caption 'caption_text'
|
83
|
-
expect(builder.command).to eq 'test caption:caption_text'
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'raises error when command is invalid' do
|
89
|
-
expect {
|
90
|
-
command = described_class.new('test', 'path')
|
91
|
-
command.input 2
|
92
|
-
}.to raise_error
|
93
|
-
end
|
94
|
-
|
95
|
-
it 'builds a dashed command' do
|
96
|
-
builder.auto_orient
|
97
|
-
expect(builder.args.join(' ')).to eq '-auto-orient'
|
98
|
-
end
|
99
|
-
|
100
|
-
it 'builds a dashed command via send' do
|
101
|
-
builder.send('auto-orient')
|
102
|
-
expect(builder.args.join(' ')).to eq '-auto-orient'
|
103
|
-
end
|
104
|
-
|
105
|
-
it 'builds a canvas command' do
|
106
|
-
builder.canvas 'black'
|
107
|
-
expect(builder.args.join(' ')).to eq 'canvas:black'
|
108
|
-
end
|
109
|
-
|
110
|
-
it 'sets a processor path correctly' do
|
111
|
-
MiniMagick.processor_path = '/a/strange/path'
|
112
|
-
builder.auto_orient
|
113
|
-
expect(builder.command).to eq '/a/strange/path/test -auto-orient'
|
114
|
-
end
|
115
|
-
|
116
|
-
it 'builds a processor path with processor' do
|
117
|
-
MiniMagick.processor_path = '/a/strange/path'
|
118
|
-
MiniMagick.processor = 'processor'
|
119
|
-
builder.auto_orient
|
120
|
-
expect(builder.command).to eq '/a/strange/path/processor test -auto-orient'
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
describe 'deprecated' do
|
125
|
-
let(:builder) { described_class.new('test') }
|
126
|
-
before { MiniMagick.processor = nil }
|
127
|
-
|
128
|
-
it 'builds a full command' do
|
129
|
-
builder.resize '30x40'
|
130
|
-
expect(builder.command).to eq 'test -resize 30x40'
|
131
|
-
end
|
132
|
-
|
133
|
-
context 'windows only', :if => MiniMagick::Utilities.windows? do
|
134
|
-
it 'sets a colorspace correctly' do
|
135
|
-
builder.set 'colorspace RGB'
|
136
|
-
expect(builder.command).to eq 'test -set colorspace RGB'
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
context 'not windows', :if => !MiniMagick::Utilities.windows? do
|
141
|
-
it 'sets a colorspace correctly' do
|
142
|
-
builder.set 'colorspace RGB'
|
143
|
-
expect(builder.command).to eq 'test -set colorspace\ RGB'
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
it 'sets a processor path correctly' do
|
148
|
-
MiniMagick.processor_path = '/a/strange/path'
|
149
|
-
builder.auto_orient
|
150
|
-
expect(builder.command).to eq '/a/strange/path/test -auto-orient'
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|