mini_magick 1.3.1 → 2.0.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.
data/README.rdoc CHANGED
@@ -1,10 +1,8 @@
1
1
  = MiniMagick
2
2
 
3
- NOTE: I'm not actively using MiniMagick anymore and am looking to hand it off
4
- to someone with more interest. Contact me through github if that person is you!
5
-
6
3
  A ruby wrapper for ImageMagick or GraphicsMagick command line.
7
4
 
5
+ Tested on both Ruby 1.9.2 and Ruby 1.8.7.
8
6
 
9
7
  == Why?
10
8
 
@@ -53,6 +51,14 @@ Need to combine several options?
53
51
  end
54
52
  image.write("output.jpg")
55
53
 
54
+ Want to composite two images? Super easy! (Aka, put a watermark on!)
55
+
56
+ image = Image.from_file("original.png")
57
+ result = image.composite(Image.open("watermark.png", "jpg") do |c|
58
+ c.gravity "center"
59
+ end
60
+ result.write("my_output_file.jpg")
61
+
56
62
  Want to manipulate an image at its source (You won't have to write it
57
63
  out because the transformations are done on that file)
58
64
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.1
1
+ 2.0.0
data/lib/mini_magick.rb CHANGED
@@ -7,6 +7,8 @@ module MiniMagick
7
7
  attr_accessor :timeout
8
8
  end
9
9
 
10
+ MOGRIFY_COMMANDS = %w{adaptive-blur adaptive-resize adaptive-sharpen adjoin affine alpha annotate antialias append authenticate auto-gamma auto-level auto-orient background bench iterations bias black-threshold blue-primary point blue-shift factor blur border bordercolor brightness-contrast caption string cdl filename channel type charcoal radius chop clip clamp clip-mask filename clip-path id clone index clut contrast-stretch coalesce colorize color-matrix colors colorspace type combine comment string compose operator composite compress type contrast convolve coefficients crop cycle amount decipher filename debug events define format:option deconstruct delay delete index density depth despeckle direction type display server dispose method distort type coefficients dither method draw string edge radius emboss radius encipher filename encoding type endian type enhance equalize evaluate operator evaluate-sequence operator extent extract family name fft fill filter type flatten flip floodfill flop font name format string frame function name fuzz distance fx expression gamma gaussian-blur geometry gravity type green-primary point help identify ifft implode amount insert index intent type interlace type interline-spacing interpolate method interword-spacing kerning label string lat layers method level limit type linear-stretch liquid-rescale log format loop iterations mask filename mattecolor median radius modulate monitor monochrome morph morphology method kernel motion-blur negate noise radius normalize opaque ordered-dither NxN orient type page paint radius ping pointsize polaroid angle posterize levels precision preview type print string process image-filter profile filename quality quantizespace quiet radial-blur angle raise random-threshold low,high red-primary point regard-warnings region remap filename render repage resample resize respect-parentheses roll rotate degrees sample sampling-factor scale scene seed segments selective-blur separate sepia-tone threshold set attribute shade degrees shadow sharpen shave shear sigmoidal-contrast size sketch solarize threshold splice spread radius strip stroke strokewidth stretch type style type swap indexes swirl degrees texture filename threshold thumbnail tile filename tile-offset tint transform transparent transparent-color transpose transverse treedepth trim type type undercolor unique-colors units type unsharp verbose version view vignette virtual-pixel method wave weight type white-point point white-threshold write filename}
11
+
10
12
  class Error < RuntimeError; end
11
13
  class Invalid < StandardError; end
12
14
 
@@ -27,7 +29,11 @@ module MiniMagick
27
29
  tempfile.close if tempfile
28
30
  end
29
31
 
30
- return self.new(tempfile.path, tempfile)
32
+ image = self.new(tempfile.path, tempfile)
33
+ if !image.valid?
34
+ raise MiniMagick::Invalid
35
+ end
36
+ image
31
37
  end
32
38
 
33
39
  # Use this if you don't want to overwrite the image file
@@ -44,9 +50,13 @@ module MiniMagick
44
50
  def initialize(input_path, tempfile=nil)
45
51
  @path = input_path
46
52
  @tempfile = tempfile # ensures that the tempfile will stick around until this image is garbage collected.
47
-
48
- # Ensure that the file is an image
53
+ end
54
+
55
+ def valid?
49
56
  run_command("identify", @path)
57
+ true
58
+ rescue MiniMagick::Invalid
59
+ false
50
60
  end
51
61
 
52
62
  # For reference see http://www.imagemagick.org/script/command-line-options.php#format
@@ -67,7 +77,12 @@ module MiniMagick
67
77
  # Get the EXIF original capture as a Time object
68
78
  Time.local(*self["EXIF:DateTimeOriginal"].split(/:|\s+/)) rescue nil
69
79
  when /^EXIF\:/i
70
- run_command('identify', '-format', "\"%[#{value}]\"", @path).chop
80
+ result = run_command('identify', '-format', "\"%[#{value}]\"", @path).chop
81
+ if result.include?(",")
82
+ read_character_data(result)
83
+ else
84
+ result
85
+ end
71
86
  else
72
87
  run_command('identify', '-format', "\"#{value}\"", @path).split("\n")[0]
73
88
  end
@@ -126,22 +141,47 @@ module MiniMagick
126
141
  # If an unknown method is called then it is sent through the morgrify program
127
142
  # Look here to find all the commands (http://www.imagemagick.org/script/mogrify.php)
128
143
  def method_missing(symbol, *args)
129
- args.push(@path) # push the path onto the end
130
- run_command("mogrify", "-#{symbol}", *args)
131
- self
144
+ guessed_command_name = symbol.to_s.gsub('_','-')
145
+
146
+ if MOGRIFY_COMMANDS.include?(guessed_command_name)
147
+ args.push(@path) # push the path onto the end
148
+ run_command("mogrify", "-#{guessed_command_name}", *args)
149
+ self
150
+ else
151
+ super(symbol, *args)
152
+ end
132
153
  end
133
154
 
134
155
  # You can use multiple commands together using this method
135
156
  def combine_options(&block)
136
- c = CommandBuilder.new
157
+ c = CommandBuilder.new('mogrify')
137
158
  block.call c
138
- run_command("mogrify", *c.args << @path)
159
+ c << @path
160
+ run(c)
139
161
  end
140
162
 
141
163
  # Check to see if we are running on win32 -- we need to escape things differently
142
164
  def windows?
143
165
  !(RUBY_PLATFORM =~ /win32/).nil?
144
166
  end
167
+
168
+ def composite(other_image, output_extension = 'jpg', &block)
169
+ begin
170
+ tempfile = Tempfile.new(output_extension)
171
+ tempfile.binmode
172
+ ensure
173
+ tempfile.close
174
+ end
175
+
176
+ command = CommandBuilder.new("composite")
177
+ block.call(command) if block
178
+ command.push(other_image.path)
179
+ command.push(self.path)
180
+ command.push(tempfile.path)
181
+
182
+ run(command)
183
+ return Image.new(tempfile.path)
184
+ end
145
185
 
146
186
  # Outputs a carriage-return delimited format string for Unix and Windows
147
187
  def format_option(format)
@@ -149,18 +189,14 @@ module MiniMagick
149
189
  end
150
190
 
151
191
  def run_command(command, *args)
152
- args.collect! do |arg|
153
- # args can contain characters like '>' so we must escape them, but don't quote switches
154
- if arg !~ /^[\+\-]/
155
- "\"#{arg}\""
156
- else
157
- arg.to_s
158
- end
159
- end
192
+ run(CommandBuilder.new(command, *args))
193
+ end
194
+
195
+ def run(command_builder)
196
+ command = command_builder.command
160
197
 
161
- command = "#{MiniMagick.processor} #{command} #{args.join(' ')}".strip
162
198
  sub = Subexec.run(command, :timeout => MiniMagick.timeout)
163
-
199
+
164
200
  if sub.exitstatus != 0
165
201
  # Clean up after ourselves in case of an error
166
202
  destroy!
@@ -183,22 +219,59 @@ module MiniMagick
183
219
  File.unlink(tempfile.path)
184
220
  @tempfile = nil
185
221
  end
222
+
223
+ private
224
+ # Sometimes we get back a list of character values
225
+ def read_character_data(list_of_characters)
226
+ chars = list_of_characters.gsub(" ", "").split(",")
227
+ result = ""
228
+ chars.each do |val|
229
+ result << ("%c" % val.to_i)
230
+ end
231
+ result
232
+ end
186
233
  end
187
234
 
188
235
  class CommandBuilder
189
236
  attr :args
237
+ attr :command
190
238
 
191
- def initialize
239
+ def initialize(command, *options)
240
+ @command = command
192
241
  @args = []
242
+
243
+ options.each { |val| push(val) }
193
244
  end
194
-
245
+
246
+ def command
247
+ "#{MiniMagick.processor} #{@command} #{@args.join(' ')}".strip
248
+ end
249
+
195
250
  def method_missing(symbol, *args)
196
- @args << "-#{symbol}"
197
- @args += args
251
+ guessed_command_name = symbol.to_s.gsub('_','-')
252
+ if MOGRIFY_COMMANDS.include?(guessed_command_name)
253
+ # This makes sure we always quote if we are passed a single
254
+ # arguement with spaces in it
255
+ if (args.size == 1) && (args.first.to_s.include?(' '))
256
+ push("-#{guessed_command_name}")
257
+ push(args.join(" "))
258
+ else
259
+ push("-#{guessed_command_name} #{args.join(" ")}")
260
+ end
261
+ else
262
+ super(symbol, *args)
263
+ end
264
+ end
265
+
266
+ def push(value)
267
+ # args can contain characters like '>' so we must escape them, but don't quote switches
268
+ @args << ((value !~ /^[\+\-]/) ? "\"#{value}\"" : value.to_s.strip)
198
269
  end
270
+ alias :<< :push
199
271
 
200
272
  def +(value)
201
- @args << "+#{value}"
273
+ puts "MINI_MAGICK: The + command has been deprecated. Please use c << '+#{value}')"
274
+ push "+#{value}"
202
275
  end
203
276
  end
204
277
  end
Binary file
data/test/animation.gif CHANGED
Binary file
@@ -1,21 +1,45 @@
1
1
  require 'rubygems'
2
2
  require 'test/unit'
3
- require 'mini_magick'
3
+ require File.expand_path('../../lib/mini_magick', __FILE__)
4
4
 
5
5
  class CommandBuilderTest < Test::Unit::TestCase
6
6
  include MiniMagick
7
7
 
8
8
  def test_basic
9
- c = CommandBuilder.new
9
+ c = CommandBuilder.new("test")
10
10
  c.resize "30x40"
11
11
  assert_equal "-resize 30x40", c.args.join(" ")
12
12
  end
13
13
 
14
14
  def test_complicated
15
- c = CommandBuilder.new
15
+ c = CommandBuilder.new("test")
16
16
  c.resize "30x40"
17
- c.input 1, 3, 4
18
- c.lingo "mome fingo"
19
- assert_equal "-resize 30x40 -input 1 3 4 -lingo mome fingo", c.args.join(" ")
17
+ c.alpha 1, 3, 4
18
+ c.resize "mome fingo"
19
+ assert_equal "-resize 30x40 -alpha 1 3 4 -resize \"mome fingo\"", c.args.join(" ")
20
+ end
21
+
22
+ def test_valid_command
23
+ begin
24
+ c = CommandBuilder.new("test", "path")
25
+ c.input 2
26
+ assert false
27
+ rescue NoMethodError
28
+ assert true
29
+ end
30
+ end
31
+
32
+ def test_full_command
33
+ c = CommandBuilder.new("test")
34
+ c.resize "30x40"
35
+ c.alpha 1, 3, 4
36
+ c.resize "mome fingo"
37
+ assert_equal "test -resize 30x40 -alpha 1 3 4 -resize \"mome fingo\"", c.command
38
+ end
39
+
40
+ def test_dashed
41
+ c = CommandBuilder.new("test")
42
+ c.auto_orient
43
+ assert_equal "-auto-orient", c.args.join(" ")
20
44
  end
21
45
  end
Binary file
data/test/image_test.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  require 'rubygems'
2
2
  require 'test/unit'
3
- require 'mini_magick'
3
+ require File.expand_path('../../lib/mini_magick', __FILE__)
4
4
 
5
- MiniMagick.processor = :gm
5
+ #MiniMagick.processor = :gm
6
6
 
7
7
  class ImageTest < Test::Unit::TestCase
8
8
  include MiniMagick
@@ -48,9 +48,15 @@ class ImageTest < Test::Unit::TestCase
48
48
  end
49
49
 
50
50
  def test_not_an_image
51
+ image = Image.new(NOT_AN_IMAGE_PATH)
52
+ assert_equal false, image.valid?
53
+ image.destroy!
54
+ end
55
+
56
+ def test_throw_on_openining_not_an_image
51
57
  assert_raise(MiniMagick::Invalid) do
52
- image = Image.new(NOT_AN_IMAGE_PATH)
53
- image.destroy!
58
+ image = Image.open(NOT_AN_IMAGE_PATH)
59
+ image.destroy
54
60
  end
55
61
  end
56
62
 
@@ -66,8 +72,8 @@ class ImageTest < Test::Unit::TestCase
66
72
  def test_tiff
67
73
  image = Image.new(TIFF_IMAGE_PATH)
68
74
  assert_equal "tiff", image[:format].downcase
69
- assert_equal 295, image[:width]
70
- assert_equal 242, image[:height]
75
+ assert_equal 50, image[:width]
76
+ assert_equal 41, image[:height]
71
77
  image.destroy!
72
78
  end
73
79
 
@@ -169,6 +175,26 @@ class ImageTest < Test::Unit::TestCase
169
175
  assert !File.exist?(before)
170
176
  image.destroy!
171
177
  end
178
+
179
+ def test_bad_method_bug
180
+ image = Image.from_file(TIFF_IMAGE_PATH)
181
+ begin
182
+ image.to_blog
183
+ rescue NoMethodError
184
+ assert true
185
+ end
186
+ image.to_blob
187
+ assert true #we made it this far without error
188
+ image.destroy!
189
+ end
190
+
191
+ def test_simple_composite
192
+ image = Image.from_file(EXIF_IMAGE_PATH)
193
+ result = image.composite(Image.open(TIFF_IMAGE_PATH)) do |c|
194
+ c.gravity "center"
195
+ end
196
+ assert `diff -s #{result.path} test/composited.jpg`.include?("identical")
197
+ end
172
198
 
173
199
  # def test_mini_magick_error_when_referencing_not_existing_page
174
200
  # image = Image.from_file(ANIMATION_PATH)
data/test/leaves.tiff CHANGED
Binary file
@@ -1,604 +1 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
- <html dir="ltr"><head>
3
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>TextDrive Community Forum / Lighttpd says Insufficient memory (case 4)</title>
4
-
5
- <link rel="stylesheet" type="text/css" href="not_an_image_files/Oxygen.css">
6
- <script type="text/javascript">
7
- <!--
8
- function process_form(the_form)
9
- {
10
- var element_names = new Object()
11
- element_names["req_message"] = "Message"
12
-
13
- if (document.all || document.getElementById)
14
- {
15
- for (i = 0; i < the_form.length; ++i)
16
- {
17
- var elem = the_form.elements[i]
18
- if (elem.name && elem.name.substring(0, 4) == "req_")
19
- {
20
- if (elem.type && (elem.type=="text" || elem.type=="textarea" || elem.type=="password" || elem.type=="file") && elem.value=='')
21
- {
22
- alert("\"" + element_names[elem.name] + "\" is a required field in this form.")
23
- elem.focus()
24
- return false
25
- }
26
- }
27
- }
28
- }
29
-
30
- return true
31
- }
32
- // -->
33
- </script>
34
- <style type="text/css">
35
-
36
- body
37
- {
38
- margin: 0px;
39
- padding: 0px;
40
- }
41
-
42
- #header
43
- {
44
- margin: 0;
45
- padding: 0;
46
- height: 100px;
47
- text-align: left;
48
- background-color: #003;
49
- }
50
-
51
- #navlinks
52
- {
53
- font: 10px Verdana, Arial, Helvetica, sans-serif;
54
- color: #333333;
55
- padding: 10px;
56
-
57
- }
58
- </style></head>
59
-
60
-
61
- <body>
62
- <div id="header"><a href="http://textdrive.com/"><img src="not_an_image_files/textdrive_head.gif" style="border: 0pt none ;" alt="TextDrive" height="100" width="600"></a></div>
63
- <div id="punwrap">
64
- <div id="punviewtopic" class="pun">
65
-
66
- <div id="brdheader" class="block">
67
- <div class="box">
68
- <div id="brdmenui" class="inbox">
69
- <ul>
70
- <li id="navindex"><a href="http://forum.textdrive.com/index.php">Index</a></li>
71
- <li id="navuserlist"><a href="http://forum.textdrive.com/userlist.php">User list</a></li>
72
- <li id="navsearch"><a href="http://forum.textdrive.com/search.php">Search</a></li>
73
- <li id="navprofile"><a href="http://forum.textdrive.com/profile.php?id=1067">Profile</a></li>
74
- <li id="navlogout"><a href="http://forum.textdrive.com/login.php?action=out&amp;id=1067">Logout</a></li>
75
- </ul>
76
- </div>
77
- <div id="brdwelcome" class="inbox">
78
- <ul class="conl">
79
- <li>Logged in as <strong>geography</strong></li>
80
- <li>Last visit: Today 21:29:23</li>
81
- </ul>
82
- <div class="clearer"></div>
83
- </div>
84
- </div>
85
- </div>
86
-
87
-
88
-
89
- <div class="linkst">
90
- <div class="inbox">
91
- <p class="pagelink conl">Pages: <strong>1</strong></p>
92
- <p class="postlink conr"><a href="http://forum.textdrive.com/post.php?tid=7356">Post reply</a></p>
93
- <ul><li><a href="http://forum.textdrive.com/index.php">Index</a></li><li>&nbsp;»&nbsp;<a href="http://forum.textdrive.com/viewforum.php?id=4">Troubleshooting</a></li><li>&nbsp;»&nbsp;Lighttpd says Insufficient memory (case 4)</li></ul>
94
- <div class="clearer"></div>
95
- </div>
96
- </div>
97
-
98
- <div id="p62698" class="blockpost rowodd firstpost">
99
- <h2><span><span class="conr">#1&nbsp;</span><a href="http://forum.textdrive.com/viewtopic.php?pid=62698#p62698">Yesterday 20:47:30</a></span></h2>
100
- <div class="box">
101
- <div class="inbox">
102
- <div class="postleft">
103
- <dl>
104
- <dt><strong><a href="http://forum.textdrive.com/profile.php?id=1067">geography</a></strong></dt>
105
- <dd class="usertitle"><strong>Member</strong></dd>
106
- <dd class="postavatar"></dd>
107
- <dd>From: NYC</dd>
108
- <dd>Registered: 2005-03-17</dd>
109
- <dd>Posts: 10</dd>
110
- <dd class="usercontacts"><a href="http://forum.textdrive.com/misc.php?email=1067">E-mail</a>&nbsp;&nbsp;<a href="http://journal.gleepglop.com/">Website</a></dd>
111
- </dl>
112
- </div>
113
- <div class="postright">
114
- <h3>Lighttpd says Insufficient memory (case 4)</h3>
115
- <div class="postmsg">
116
- <p>I
117
- have a rails app that downloads images found on the web. I'm running it
118
- through lighttpd and everything works fine unless it is a large image
119
- (Like over 500k).</p>
120
-
121
- <p>Then lighttpd throughs this error:</p>
122
- Insufficient memory (case 4)
123
-
124
- <p>Has anyone else encountered this? What exactly could be the root of this error?</p>
125
-
126
-
127
-
128
- </div>
129
- </div>
130
- <div class="clearer"></div>
131
- <div class="postfootleft"><p><strong>Online</strong></p></div>
132
- <div class="postfootright"><ul><li class="postreport"><a href="http://forum.textdrive.com/misc.php?report=62698">Report</a> | </li><li class="postedit"><a href="http://forum.textdrive.com/edit.php?id=62698">Edit</a> | </li><li class="postquote"><a href="http://forum.textdrive.com/post.php?tid=7356&amp;qid=62698">Quote</a></li></ul></div>
133
- </div>
134
- </div>
135
- </div>
136
-
137
- <div id="p62708" class="blockpost roweven">
138
- <h2><span><span class="conr">#2&nbsp;</span><a href="http://forum.textdrive.com/viewtopic.php?pid=62708#p62708">Yesterday 22:06:50</a></span></h2>
139
- <div class="box">
140
- <div class="inbox">
141
- <div class="postleft">
142
- <dl>
143
- <dt><strong><a href="http://forum.textdrive.com/profile.php?id=2707">jqshenker</a></strong></dt>
144
- <dd class="usertitle"><strong>Member</strong></dd>
145
- <dd class="postavatar"><img src="not_an_image_files/2707.jfif" alt="" height="60" width="60"></dd>
146
- <dd>From: Palo Alto, CA</dd>
147
- <dd>Registered: 2005-09-06</dd>
148
- <dd>Posts: 422</dd>
149
- <dd class="usercontacts"><a href="http://forum.textdrive.com/misc.php?email=2707">E-mail</a>&nbsp;&nbsp;<a href="http://nothingmuch.textdriven.com/">Website</a></dd>
150
- </dl>
151
- </div>
152
- <div class="postright">
153
- <h3> Re: Lighttpd says Insufficient memory (case 4)</h3>
154
- <div class="postmsg">
155
- <p>Yeah,
156
- it's the limits. Are you downloading it, or resizing it as well?
157
- Downloading usually isn't the problem, it's the resizing that breaks.</p>
158
-
159
-
160
-
161
- </div>
162
- <div class="postsignature"><hr><a href="http://soggyslides.textdriven.com/">soggyslides - {abstractisms daily}</a></div>
163
- </div>
164
- <div class="clearer"></div>
165
- <div class="postfootleft"><p>Offline</p></div>
166
- <div class="postfootright"><ul><li class="postreport"><a href="http://forum.textdrive.com/misc.php?report=62708">Report</a> | </li><li class="postquote"><a href="http://forum.textdrive.com/post.php?tid=7356&amp;qid=62708">Quote</a></li></ul></div>
167
- </div>
168
- </div>
169
- </div>
170
-
171
- <div id="p62709" class="blockpost rowodd">
172
- <h2><span><span class="conr">#3&nbsp;</span><a href="http://forum.textdrive.com/viewtopic.php?pid=62709#p62709">Yesterday 22:12:28</a></span></h2>
173
- <div class="box">
174
- <div class="inbox">
175
- <div class="postleft">
176
- <dl>
177
- <dt><strong><a href="http://forum.textdrive.com/profile.php?id=1045">julik</a></strong></dt>
178
- <dd class="usertitle"><strong>Member</strong></dd>
179
- <dd class="postavatar"><img src="not_an_image_files/1045.png" alt="" height="60" width="57"></dd>
180
- <dd>From: Utrecht, Netherlands</dd>
181
- <dd>Registered: 2005-03-12</dd>
182
- <dd>Posts: 137</dd>
183
- <dd class="usercontacts"><a href="http://forum.textdrive.com/misc.php?email=1045">E-mail</a>&nbsp;&nbsp;<a href="http://live.julik.nl/">Website</a></dd>
184
- </dl>
185
- </div>
186
- <div class="postright">
187
- <h3> Re: Lighttpd says Insufficient memory (case 4)</h3>
188
- <div class="postmsg">
189
- <p>that doesn't feel well</p>
190
-
191
-
192
-
193
- </div>
194
- </div>
195
- <div class="clearer"></div>
196
- <div class="postfootleft"><p><strong>Online</strong></p></div>
197
- <div class="postfootright"><ul><li class="postreport"><a href="http://forum.textdrive.com/misc.php?report=62709">Report</a> | </li><li class="postquote"><a href="http://forum.textdrive.com/post.php?tid=7356&amp;qid=62709">Quote</a></li></ul></div>
198
- </div>
199
- </div>
200
- </div>
201
-
202
- <div id="p62732" class="blockpost roweven">
203
- <h2><span><span class="conr">#4&nbsp;</span><a href="http://forum.textdrive.com/viewtopic.php?pid=62732#p62732">Today 03:46:42</a></span></h2>
204
- <div class="box">
205
- <div class="inbox">
206
- <div class="postleft">
207
- <dl>
208
- <dt><strong><a href="http://forum.textdrive.com/profile.php?id=1067">geography</a></strong></dt>
209
- <dd class="usertitle"><strong>Member</strong></dd>
210
- <dd class="postavatar"></dd>
211
- <dd>From: NYC</dd>
212
- <dd>Registered: 2005-03-17</dd>
213
- <dd>Posts: 10</dd>
214
- <dd class="usercontacts"><a href="http://forum.textdrive.com/misc.php?email=1067">E-mail</a>&nbsp;&nbsp;<a href="http://journal.gleepglop.com/">Website</a></dd>
215
- </dl>
216
- </div>
217
- <div class="postright">
218
- <h3> Re: Lighttpd says Insufficient memory (case 4)</h3>
219
- <div class="postmsg">
220
- <p>I'm resizing it too. But that is not where it dies.<br>
221
- It dies right before I write it to disk (With Magick::Image.write from RMagick)</p>
222
-
223
-
224
-
225
- </div>
226
- </div>
227
- <div class="clearer"></div>
228
- <div class="postfootleft"><p><strong>Online</strong></p></div>
229
- <div class="postfootright"><ul><li class="postreport"><a href="http://forum.textdrive.com/misc.php?report=62732">Report</a> | </li><li class="postdelete"><a href="http://forum.textdrive.com/delete.php?id=62732">Delete</a> | </li><li class="postedit"><a href="http://forum.textdrive.com/edit.php?id=62732">Edit</a> | </li><li class="postquote"><a href="http://forum.textdrive.com/post.php?tid=7356&amp;qid=62732">Quote</a></li></ul></div>
230
- </div>
231
- </div>
232
- </div>
233
-
234
- <div id="p62735" class="blockpost rowodd">
235
- <h2><span><span class="conr">#5&nbsp;</span><a href="http://forum.textdrive.com/viewtopic.php?pid=62735#p62735">Today 04:14:08</a></span></h2>
236
- <div class="box">
237
- <div class="inbox">
238
- <div class="postleft">
239
- <dl>
240
- <dt><strong><a href="http://forum.textdrive.com/profile.php?id=2707">jqshenker</a></strong></dt>
241
- <dd class="usertitle"><strong>Member</strong></dd>
242
- <dd class="postavatar"><img src="not_an_image_files/2707.jfif" alt="" height="60" width="60"></dd>
243
- <dd>From: Palo Alto, CA</dd>
244
- <dd>Registered: 2005-09-06</dd>
245
- <dd>Posts: 422</dd>
246
- <dd class="usercontacts"><a href="http://forum.textdrive.com/misc.php?email=2707">E-mail</a>&nbsp;&nbsp;<a href="http://nothingmuch.textdriven.com/">Website</a></dd>
247
- </dl>
248
- </div>
249
- <div class="postright">
250
- <h3> Re: Lighttpd says Insufficient memory (case 4)</h3>
251
- <div class="postmsg">
252
- <p></p><blockquote><div class="incqbox"><h4>geography wrote:</h4><p>I'm resizing it too. But that is not where it dies.<br>
253
- It dies right before I write it to disk (With Magick::Image.write from RMagick)</p></div></blockquote><p><br>
254
- I meant "resizing" as anything to do with RMagick. There've been a
255
- couple threads on this, search around. Resizing you image before upload
256
- or not using RMagick and instead using ImageMagick via the commandline
257
- might or might not work.... basically you can't do much, unfortunately.</p>
258
-
259
-
260
-
261
- </div>
262
- <div class="postsignature"><hr><a href="http://soggyslides.textdriven.com/">soggyslides - {abstractisms daily}</a></div>
263
- </div>
264
- <div class="clearer"></div>
265
- <div class="postfootleft"><p>Offline</p></div>
266
- <div class="postfootright"><ul><li class="postreport"><a href="http://forum.textdrive.com/misc.php?report=62735">Report</a> | </li><li class="postquote"><a href="http://forum.textdrive.com/post.php?tid=7356&amp;qid=62735">Quote</a></li></ul></div>
267
- </div>
268
- </div>
269
- </div>
270
-
271
- <div id="p62737" class="blockpost roweven">
272
- <h2><span><span class="conr">#6&nbsp;</span><a href="http://forum.textdrive.com/viewtopic.php?pid=62737#p62737">Today 04:17:28</a></span></h2>
273
- <div class="box">
274
- <div class="inbox">
275
- <div class="postleft">
276
- <dl>
277
- <dt><strong><a href="http://forum.textdrive.com/profile.php?id=1097">cch</a></strong></dt>
278
- <dd class="usertitle"><strong>Member</strong></dd>
279
- <dd class="postavatar"></dd>
280
- <dd>Registered: 2005-03-21</dd>
281
- <dd>Posts: 108</dd>
282
- <dd class="usercontacts"><a href="http://forum.textdrive.com/misc.php?email=1097">E-mail</a></dd>
283
- </dl>
284
- </div>
285
- <div class="postright">
286
- <h3> Re: Lighttpd says Insufficient memory (case 4)</h3>
287
- <div class="postmsg">
288
- <p>what if you use open(fname, 'w'){|f|f.write img.to_blob} ?</p>
289
-
290
-
291
-
292
- </div>
293
- </div>
294
- <div class="clearer"></div>
295
- <div class="postfootleft"><p>Offline</p></div>
296
- <div class="postfootright"><ul><li class="postreport"><a href="http://forum.textdrive.com/misc.php?report=62737">Report</a> | </li><li class="postquote"><a href="http://forum.textdrive.com/post.php?tid=7356&amp;qid=62737">Quote</a></li></ul></div>
297
- </div>
298
- </div>
299
- </div>
300
-
301
- <div id="p62767" class="blockpost rowodd">
302
- <h2><span><span class="conr">#7&nbsp;</span><a href="http://forum.textdrive.com/viewtopic.php?pid=62767#p62767">Today 15:44:42</a></span></h2>
303
- <div class="box">
304
- <div class="inbox">
305
- <div class="postleft">
306
- <dl>
307
- <dt><strong><a href="http://forum.textdrive.com/profile.php?id=1067">geography</a></strong></dt>
308
- <dd class="usertitle"><strong>Member</strong></dd>
309
- <dd class="postavatar"></dd>
310
- <dd>From: NYC</dd>
311
- <dd>Registered: 2005-03-17</dd>
312
- <dd>Posts: 10</dd>
313
- <dd class="usercontacts"><a href="http://forum.textdrive.com/misc.php?email=1067">E-mail</a>&nbsp;&nbsp;<a href="http://journal.gleepglop.com/">Website</a></dd>
314
- </dl>
315
- </div>
316
- <div class="postright">
317
- <h3> Re: Lighttpd says Insufficient memory (case 4)</h3>
318
- <div class="postmsg">
319
- <p>Using
320
- open(fname, 'w'){|f|f.write img.to_blob} has the same problem... I
321
- guess I'll try and run it from the command line but that seems like a
322
- drastic step. Why is the memory so limited, shouldn't the server be
323
- able to save 500k files, or does imageMagick have a very high overhead?</p>
324
-
325
-
326
-
327
- </div>
328
- </div>
329
- <div class="clearer"></div>
330
- <div class="postfootleft"><p><strong>Online</strong></p></div>
331
- <div class="postfootright"><ul><li class="postreport"><a href="http://forum.textdrive.com/misc.php?report=62767">Report</a> | </li><li class="postdelete"><a href="http://forum.textdrive.com/delete.php?id=62767">Delete</a> | </li><li class="postedit"><a href="http://forum.textdrive.com/edit.php?id=62767">Edit</a> | </li><li class="postquote"><a href="http://forum.textdrive.com/post.php?tid=7356&amp;qid=62767">Quote</a></li></ul></div>
332
- </div>
333
- </div>
334
- </div>
335
-
336
- <div id="p62774" class="blockpost roweven">
337
- <h2><span><span class="conr">#8&nbsp;</span><a href="http://forum.textdrive.com/viewtopic.php?pid=62774#p62774">Today 17:03:28</a></span></h2>
338
- <div class="box">
339
- <div class="inbox">
340
- <div class="postleft">
341
- <dl>
342
- <dt><strong><a href="http://forum.textdrive.com/profile.php?id=2707">jqshenker</a></strong></dt>
343
- <dd class="usertitle"><strong>Member</strong></dd>
344
- <dd class="postavatar"><img src="not_an_image_files/2707.jfif" alt="" height="60" width="60"></dd>
345
- <dd>From: Palo Alto, CA</dd>
346
- <dd>Registered: 2005-09-06</dd>
347
- <dd>Posts: 422</dd>
348
- <dd class="usercontacts"><a href="http://forum.textdrive.com/misc.php?email=2707">E-mail</a>&nbsp;&nbsp;<a href="http://nothingmuch.textdriven.com/">Website</a></dd>
349
- </dl>
350
- </div>
351
- <div class="postright">
352
- <h3> Re: Lighttpd says Insufficient memory (case 4)</h3>
353
- <div class="postmsg">
354
- <p>RMagick
355
- does leak memory in some versions (there's a patched version of
356
- file_column which resizes via the commandline), but I'm not sure why
357
- you can't resize larger images. It doesn't take <strong>that</strong> much memory.</p>
358
-
359
-
360
-
361
- </div>
362
- <div class="postsignature"><hr><a href="http://soggyslides.textdriven.com/">soggyslides - {abstractisms daily}</a></div>
363
- </div>
364
- <div class="clearer"></div>
365
- <div class="postfootleft"><p>Offline</p></div>
366
- <div class="postfootright"><ul><li class="postreport"><a href="http://forum.textdrive.com/misc.php?report=62774">Report</a> | </li><li class="postquote"><a href="http://forum.textdrive.com/post.php?tid=7356&amp;qid=62774">Quote</a></li></ul></div>
367
- </div>
368
- </div>
369
- </div>
370
-
371
- <div id="p62782" class="blockpost rowodd">
372
- <h2><span><span class="conr">#9&nbsp;</span><a href="http://forum.textdrive.com/viewtopic.php?pid=62782#p62782">Today 19:04:21</a></span></h2>
373
- <div class="box">
374
- <div class="inbox">
375
- <div class="postleft">
376
- <dl>
377
- <dt><strong><a href="http://forum.textdrive.com/profile.php?id=1067">geography</a></strong></dt>
378
- <dd class="usertitle"><strong>Member</strong></dd>
379
- <dd class="postavatar"></dd>
380
- <dd>From: NYC</dd>
381
- <dd>Registered: 2005-03-17</dd>
382
- <dd>Posts: 10</dd>
383
- <dd class="usercontacts"><a href="http://forum.textdrive.com/misc.php?email=1067">E-mail</a>&nbsp;&nbsp;<a href="http://journal.gleepglop.com/">Website</a></dd>
384
- </dl>
385
- </div>
386
- <div class="postright">
387
- <h3> Re: Lighttpd says Insufficient memory (case 4)</h3>
388
- <div class="postmsg">
389
- <p>So what i've learned so far...</p>
390
-
391
- <p>TextDrive has a memory limit.<br>
392
- -When using RMagick in a rails app running with fcgi and lighttpd this memory limit is exceeded.<br>
393
- -When the memory limit is exceeded the fcgi process is killed (No expcetions caught or anything in Ruby... the process ends)<br>
394
- -The problem occurs when writing images to disk (With either File.open or Image.write)<br>
395
- -The problem still occurs if I call GC.starts after RMagick calls</p>
396
-
397
- <p>Here is what I don't get...<br>
398
- -Why is the memory limit so low (Or why does a simple RMagick call take
399
- up so much memory? My dispatch procs take up around 50 megs, I can't
400
- imagine that opening a 600k file would come close to using that much
401
- memory)<br>
402
- -Would putting my RMagick code in a different thread allow me to have more memory at my disposal?</p>
403
-
404
-
405
-
406
- </div>
407
- </div>
408
- <div class="clearer"></div>
409
- <div class="postfootleft"><p><strong>Online</strong></p></div>
410
- <div class="postfootright"><ul><li class="postreport"><a href="http://forum.textdrive.com/misc.php?report=62782">Report</a> | </li><li class="postdelete"><a href="http://forum.textdrive.com/delete.php?id=62782">Delete</a> | </li><li class="postedit"><a href="http://forum.textdrive.com/edit.php?id=62782">Edit</a> | </li><li class="postquote"><a href="http://forum.textdrive.com/post.php?tid=7356&amp;qid=62782">Quote</a></li></ul></div>
411
- </div>
412
- </div>
413
- </div>
414
-
415
- <div id="p62785" class="blockpost roweven">
416
- <h2><span><span class="conr">#10&nbsp;</span><a href="http://forum.textdrive.com/viewtopic.php?pid=62785#p62785">Today 19:29:11</a></span></h2>
417
- <div class="box">
418
- <div class="inbox">
419
- <div class="postleft">
420
- <dl>
421
- <dt><strong><a href="http://forum.textdrive.com/profile.php?id=1097">cch</a></strong></dt>
422
- <dd class="usertitle"><strong>Member</strong></dd>
423
- <dd class="postavatar"></dd>
424
- <dd>Registered: 2005-03-21</dd>
425
- <dd>Posts: 108</dd>
426
- <dd class="usercontacts"><a href="http://forum.textdrive.com/misc.php?email=1097">E-mail</a></dd>
427
- </dl>
428
- </div>
429
- <div class="postright">
430
- <h3> Re: Lighttpd says Insufficient memory (case 4)</h3>
431
- <div class="postmsg">
432
- <p>the memory limit is 100mb.</p>
433
-
434
- <p>watch
435
- your process as you make the upload to see how high it goes. also try
436
- resizing an image using a standalone (no rails) ruby script and see how
437
- much memory it uses this way.</p>
438
-
439
-
440
-
441
- </div>
442
- </div>
443
- <div class="clearer"></div>
444
- <div class="postfootleft"><p>Offline</p></div>
445
- <div class="postfootright"><ul><li class="postreport"><a href="http://forum.textdrive.com/misc.php?report=62785">Report</a> | </li><li class="postquote"><a href="http://forum.textdrive.com/post.php?tid=7356&amp;qid=62785">Quote</a></li></ul></div>
446
- </div>
447
- </div>
448
- </div>
449
-
450
- <div id="p62796" class="blockpost rowodd">
451
- <h2><span><span class="conr">#11&nbsp;</span><a href="http://forum.textdrive.com/viewtopic.php?pid=62796#p62796">Today 21:13:19</a></span></h2>
452
- <div class="box">
453
- <div class="inbox">
454
- <div class="postleft">
455
- <dl>
456
- <dt><strong><a href="http://forum.textdrive.com/profile.php?id=1067">geography</a></strong></dt>
457
- <dd class="usertitle"><strong>Member</strong></dd>
458
- <dd class="postavatar"></dd>
459
- <dd>From: NYC</dd>
460
- <dd>Registered: 2005-03-17</dd>
461
- <dd>Posts: 10</dd>
462
- <dd class="usercontacts"><a href="http://forum.textdrive.com/misc.php?email=1067">E-mail</a>&nbsp;&nbsp;<a href="http://journal.gleepglop.com/">Website</a></dd>
463
- </dl>
464
- </div>
465
- <div class="postright">
466
- <h3> Re: Lighttpd says Insufficient memory (case 4)</h3>
467
- <div class="postmsg">
468
- <p>So after some investigation it seems like RMagick is a total memory hog.</p>
469
-
470
- <p>I load a 750k image with this tiny standalone ruby program...</p>
471
-
472
- <p>image = nil<br>
473
- open(filepath) do |f|</p>
474
- image = Magick::Image.from_blob(f.read).first<br>
475
- end<br>
476
- image.write("image.jpg")
477
-
478
- <p>Monitoring the mem usage (using top) I get this 8th column is mem usuage</p>
479
- <p>#File being downloaded<br>
480
- 7198 ruby 7.6% 0:04.83 2 15 60 3.37M+ 2.65M 4.88M+ 44.5M+<br>
481
- 7198 ruby 14.4% 0:05.01 2 15 68 18.1M+ 2.73M+ 20.0M+ 80.9M+<br>
482
- 7198 ruby 35.0% 0:05.49 2 15 67 41.8M+ 2.73M 43.7M+ 80.8M-</p>
483
- <p>#File being loading into Magick::Image<br>
484
- 7198 ruby 0.1% 0:05.49 2 15 67 41.8M 2.73M 43.7M 80.8M-<br>
485
- 7198 ruby 0.1% 0:05.49 2 15 67 41.8M 2.73M 43.7M 80.8M-</p>
486
- <p>#File being written to disk<br>
487
- 7198 ruby 3.4% 0:05.53 2 15 72 43.4M+ 2.73M 45.3M+ 122M+<br>
488
- 7198 ruby 55.9% 0:06.29 2 15 72 61.1M+ 2.73M 63.0M+ 122M <br>
489
- 7198 ruby 48.4% 0:06.93 2 15 72 76.1M+ 2.73M 78.1M+ 122M <br>
490
- 7198 ruby 48.2% 0:07.55 2 15 67 42.5M- 2.73M 44.4M- 80.8M-</p>
491
-
492
- <p>So
493
- I guess the moral is RMagick eats up a ton of memory. I can't really
494
- see anyway around this problem though, maybe using the command line
495
- would eat up less memory (which is what I'll try next)</p>
496
-
497
-
498
-
499
- <p class="postedit"><em>Last edited by geography (Today 21:29:17)</em></p>
500
- </div>
501
- </div>
502
- <div class="clearer"></div>
503
- <div class="postfootleft"><p><strong>Online</strong></p></div>
504
- <div class="postfootright"><ul><li class="postreport"><a href="http://forum.textdrive.com/misc.php?report=62796">Report</a> | </li><li class="postdelete"><a href="http://forum.textdrive.com/delete.php?id=62796">Delete</a> | </li><li class="postedit"><a href="http://forum.textdrive.com/edit.php?id=62796">Edit</a> | </li><li class="postquote"><a href="http://forum.textdrive.com/post.php?tid=7356&amp;qid=62796">Quote</a></li></ul></div>
505
- </div>
506
- </div>
507
- </div>
508
-
509
- <div id="p62801" class="blockpost roweven">
510
- <h2><span><span class="conr">#12&nbsp;</span><a href="http://forum.textdrive.com/viewtopic.php?pid=62801#p62801">Today 21:55:36</a></span></h2>
511
- <div class="box">
512
- <div class="inbox">
513
- <div class="postleft">
514
- <dl>
515
- <dt><strong><a href="http://forum.textdrive.com/profile.php?id=1097">cch</a></strong></dt>
516
- <dd class="usertitle"><strong>Member</strong></dd>
517
- <dd class="postavatar"></dd>
518
- <dd>Registered: 2005-03-21</dd>
519
- <dd>Posts: 108</dd>
520
- <dd class="usercontacts"><a href="http://forum.textdrive.com/misc.php?email=1097">E-mail</a></dd>
521
- </dl>
522
- </div>
523
- <div class="postright">
524
- <h3> Re: Lighttpd says Insufficient memory (case 4)</h3>
525
- <div class="postmsg">
526
- <p>Yea, now you have to know whether it's RMagick specifically, or ImageMagick itself that is a memory hog.</p>
527
-
528
- <p>I
529
- suppose it goes memory hungry because it expands a full uncompressed
530
- 24bit bitmap to memory, and that's innevitably large. (entirely
531
- uninformed hunch)</p>
532
-
533
- <p>There's ruby-GD as an alternative, but it
534
- doesn't look nearly as nice, and I've never used it, and I don't know
535
- if it'd be more or less of a hog.</p>
536
-
537
-
538
-
539
- <p class="postedit"><em>Last edited by cch (Today 21:56:17)</em></p>
540
- </div>
541
- </div>
542
- <div class="clearer"></div>
543
- <div class="postfootleft"><p>Offline</p></div>
544
- <div class="postfootright"><ul><li class="postreport"><a href="http://forum.textdrive.com/misc.php?report=62801">Report</a> | </li><li class="postquote"><a href="http://forum.textdrive.com/post.php?tid=7356&amp;qid=62801">Quote</a></li></ul></div>
545
- </div>
546
- </div>
547
- </div>
548
-
549
- <div class="postlinksb">
550
- <div class="inbox">
551
- <p class="postlink conr"><a href="http://forum.textdrive.com/post.php?tid=7356">Post reply</a></p>
552
- <p class="pagelink conl">Pages: <strong>1</strong></p>
553
- <ul><li><a href="http://forum.textdrive.com/index.php">Index</a></li><li>&nbsp;»&nbsp;<a href="http://forum.textdrive.com/viewforum.php?id=4">Troubleshooting</a></li><li>&nbsp;»&nbsp;Lighttpd says Insufficient memory (case 4)</li></ul>
554
- <p class="subscribelink clearb">You are currently subscribed to this topic - <a href="http://forum.textdrive.com/misc.php?unsubscribe=7356">Unsubscribe</a></p>
555
- </div>
556
- </div>
557
-
558
- <div class="blockform">
559
- <h2><span>Quick post</span></h2>
560
- <div class="box">
561
- <form method="post" action="post.php?tid=7356" onsubmit="this.submit.disabled=true;if(process_form(this)){return true;}else{this.submit.disabled=false;return false;}">
562
- <div class="inform">
563
- <fieldset>
564
- <legend>Write your message and submit <span style="color: red; text-decoration: underline;">keeping in mind that this is not an official support forum.</span></legend>
565
- <div class="infldset txtarea">
566
- <input name="form_sent" value="1" type="hidden">
567
- <input name="form_user" value="geography" type="hidden">
568
- <label><textarea name="req_message" rows="7" cols="75" tabindex="1"></textarea></label>
569
- <ul class="bblinks">
570
- <li><a href="http://forum.textdrive.com/help.php#bbcode" onclick="window.open(this.href); return false;">BBCode</a>: on</li>
571
- <li><a href="http://forum.textdrive.com/help.php#img" onclick="window.open(this.href); return false;">[img] tag</a>: on</li>
572
- <li><a href="http://forum.textdrive.com/help.php#smilies" onclick="window.open(this.href); return false;">Smilies</a>: off</li>
573
- </ul>
574
- </div>
575
- </fieldset>
576
- </div>
577
- <p><input name="submit" tabindex="2" value="Submit" accesskey="s" type="submit"></p>
578
- </form>
579
- </div>
580
- </div>
581
-
582
- <div id="brdfooter" class="block">
583
- <h2><span>Board footer</span></h2>
584
- <div class="box">
585
- <div class="inbox">
586
-
587
- <div class="conl">
588
- <form id="qjump" method="get" action="viewforum.php">
589
- <div><label>Jump to
590
- <br><select name="id" onchange="window.location=('viewforum.php?id='+this.options[this.selectedIndex].value)"><optgroup label="TextDrive Hosting"><option value="2">Announcements</option><option value="33">Questions and Stuff</option><option value="11">Why Host With TXD?</option><option value="1">Getting Started</option><option value="3">How Do I...?</option><option value="4" selected="selected">Troubleshooting</option><option value="15">SPAM and Security</option><option value="5">Coding in General</option><option value="16">Localhostin'</option><option value="31">Look What I Did Dammit</option><option value="6">TextDrivel</option><option value="8">Archives</option><option value="32">Designing yourself into a corner</option></optgroup><optgroup label="TextDrive Internationale"><option value="23">TextDrive En Español</option><option value="24">TextDrive en Français</option></optgroup><optgroup label="Applications (and their developers) on TextDrive"><option value="7">Textpattern</option><option value="9">RubyOnRails</option><option value="10">Instiki</option><option value="12">Photostack</option><option value="13">PunBB</option><option value="14">WordPress</option><option value="17">Epilog</option><option value="20">sIFR</option><option value="22">Subversion</option><option value="26">Lightpress</option><option value="27">Loudblog</option><option value="25">Strongspace</option><option value="29">RailsAppHosting</option><option value="35">Anemone</option><option value="28">Django</option><option value="30">TurboGears</option><option value="34">Templation</option></optgroup></select>
591
- <input value=" Go " accesskey="g" type="submit">
592
- </label></div>
593
- </form>
594
- </div>
595
- <p class="conr">Powered by <a href="http://www.punbb.org/">PunBB</a><br>© Copyright 2002–2005 Rickard Andersson</p>
596
- <div class="clearer"></div>
597
- </div>
598
- </div>
599
- </div>
600
-
601
- </div>
602
- </div>
603
-
604
- </body></html>
1
+ <?php I am so not an image ?>
data/test/trogdor.jpg CHANGED
Binary file
metadata CHANGED
@@ -1,22 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_magick
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
5
4
  prerelease: false
6
5
  segments:
7
- - 1
8
- - 3
9
- - 1
10
- version: 1.3.1
6
+ - 2
7
+ - 0
8
+ - 0
9
+ version: 2.0.0
11
10
  platform: ruby
12
11
  authors:
13
12
  - Corey Johnson
13
+ - Hampton Catlin
14
14
  - Peter Kieltyka
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-07-08 00:00:00 -07:00
19
+ date: 2010-08-17 00:00:00 +01:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -27,7 +27,6 @@ dependencies:
27
27
  requirements:
28
28
  - - ~>
29
29
  - !ruby/object:Gem::Version
30
- hash: 23
31
30
  segments:
32
31
  - 0
33
32
  - 0
@@ -35,9 +34,10 @@ dependencies:
35
34
  version: 0.0.4
36
35
  type: :runtime
37
36
  version_requirements: *id001
38
- description: Manipulate images with minimal use of memory via ImageMagick / GraphicsMagick
37
+ description: ""
39
38
  email:
40
39
  - probablycorey@gmail.com
40
+ - hcatlin@gmail.com
41
41
  - peter@nulayer.com
42
42
  executables: []
43
43
 
@@ -55,6 +55,7 @@ files:
55
55
  - test/actually_a_gif.jpg
56
56
  - test/animation.gif
57
57
  - test/command_builder_test.rb
58
+ - test/composited.jpg
58
59
  - test/image_test.rb
59
60
  - test/leaves.tiff
60
61
  - test/not_an_image.php
@@ -62,7 +63,7 @@ files:
62
63
  - test/simple.gif
63
64
  - test/trogdor.jpg
64
65
  has_rdoc: true
65
- homepage: http://github.com/pkieltyka/mini_magick
66
+ homepage: http://github.com/probablycorey/mini_magick
66
67
  licenses: []
67
68
 
68
69
  post_install_message:
@@ -75,7 +76,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
75
76
  requirements:
76
77
  - - ">="
77
78
  - !ruby/object:Gem::Version
78
- hash: 3
79
79
  segments:
80
80
  - 0
81
81
  version: "0"
@@ -84,7 +84,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
84
  requirements:
85
85
  - - ">="
86
86
  - !ruby/object:Gem::Version
87
- hash: 3
88
87
  segments:
89
88
  - 0
90
89
  version: "0"
@@ -99,6 +98,7 @@ test_files:
99
98
  - test/actually_a_gif.jpg
100
99
  - test/animation.gif
101
100
  - test/command_builder_test.rb
101
+ - test/composited.jpg
102
102
  - test/image_test.rb
103
103
  - test/leaves.tiff
104
104
  - test/not_an_image.php