tupalo-mini_magick 1.2.5 → 3.1

Sign up to get free protection for your applications and to get access to all the features.
Binary file
data/test/animation.gif CHANGED
Binary file
@@ -1,20 +1,37 @@
1
+ require 'rubygems'
1
2
  require 'test/unit'
2
- require File.join(File.dirname(__FILE__), '../lib/mini_magick')
3
+ require File.expand_path('../../lib/mini_magick', __FILE__)
3
4
 
4
5
  class CommandBuilderTest < Test::Unit::TestCase
5
6
  include MiniMagick
6
7
 
7
8
  def test_basic
8
- c = CommandBuilder.new
9
+ c = CommandBuilder.new("test")
9
10
  c.resize "30x40"
10
- assert_equal "-resize 30x40", c.args.join(" ")
11
+ assert_equal "-resize \"30x40\"", c.args.join(" ")
11
12
  end
12
13
 
13
14
  def test_complicated
14
- c = CommandBuilder.new
15
+ c = CommandBuilder.new("test")
15
16
  c.resize "30x40"
16
- c.input 1, 3, 4
17
- c.lingo "mome fingo"
18
- 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_dashed
33
+ c = CommandBuilder.new("test")
34
+ c.auto_orient
35
+ assert_equal "-auto-orient", c.args.join(" ")
19
36
  end
20
37
  end
Binary file
data/test/image_test.rb CHANGED
@@ -1,5 +1,11 @@
1
+ require 'rubygems'
1
2
  require 'test/unit'
2
- require File.join(File.dirname(__FILE__), '../lib/mini_magick')
3
+ require 'mocha'
4
+ require 'pathname'
5
+ require 'stringio'
6
+ require File.expand_path('../../lib/mini_magick', __FILE__)
7
+
8
+ #MiniMagick.processor = :gm
3
9
 
4
10
  class ImageTest < Test::Unit::TestCase
5
11
  include MiniMagick
@@ -7,25 +13,49 @@ class ImageTest < Test::Unit::TestCase
7
13
  CURRENT_DIR = File.dirname(File.expand_path(__FILE__)) + "/"
8
14
 
9
15
  SIMPLE_IMAGE_PATH = CURRENT_DIR + "simple.gif"
10
- MINUS_IMAGE_PATH = CURRENT_DIR + "simple-minus.gif"
11
- TIFF_IMAGE_PATH = CURRENT_DIR + "leaves.tiff"
16
+ MINUS_IMAGE_PATH = CURRENT_DIR + "simple-minus.gif"
17
+ TIFF_IMAGE_PATH = CURRENT_DIR + "leaves spaced.tiff"
12
18
  NOT_AN_IMAGE_PATH = CURRENT_DIR + "not_an_image.php"
13
- GIF_WITH_JPG_EXT = CURRENT_DIR + "actually_a_gif.jpg"
14
- EXIF_IMAGE_PATH = CURRENT_DIR + "trogdor.jpg"
15
- ANIMATION_PATH = CURRENT_DIR + "animation.gif"
19
+ GIF_WITH_JPG_EXT = CURRENT_DIR + "actually_a_gif.jpg"
20
+ EXIF_IMAGE_PATH = CURRENT_DIR + "trogdor.jpg"
21
+ ANIMATION_PATH = CURRENT_DIR + "animation.gif"
16
22
 
17
23
  def test_image_from_blob
18
24
  File.open(SIMPLE_IMAGE_PATH, "rb") do |f|
19
- image = Image.from_blob(f.read)
25
+ image = Image.read(f.read)
26
+ assert image.valid?
27
+ image.destroy!
20
28
  end
21
29
  end
22
30
 
23
- def test_image_from_file
24
- image = Image.from_file(SIMPLE_IMAGE_PATH)
31
+ def test_image_open
32
+ image = Image.open(SIMPLE_IMAGE_PATH)
33
+ assert image.valid?
34
+ image.destroy!
35
+ end
36
+
37
+ def test_image_io_reading
38
+ buffer = StringIO.new(File.read(SIMPLE_IMAGE_PATH))
39
+ image = Image.read(buffer)
40
+ image.destroy!
41
+ end
42
+
43
+ def test_image_create
44
+ image = Image.create do |f|
45
+ f.write(File.read(SIMPLE_IMAGE_PATH))
46
+ end
47
+ image.destroy!
25
48
  end
26
49
 
27
50
  def test_image_new
28
51
  image = Image.new(SIMPLE_IMAGE_PATH)
52
+ image.destroy!
53
+ end
54
+
55
+ def test_remote_image
56
+ image = Image.open("http://www.google.com/images/logos/logo.png")
57
+ image.valid?
58
+ image.destroy!
29
59
  end
30
60
 
31
61
  def test_image_write
@@ -38,11 +68,28 @@ class ImageTest < Test::Unit::TestCase
38
68
  ensure
39
69
  File.delete output_path
40
70
  end
71
+ image.destroy!
72
+ end
73
+
74
+ def test_image_write_with_stream
75
+ stream = StringIO.new
76
+ image = Image.open(SIMPLE_IMAGE_PATH)
77
+ image.write("/tmp/foo.gif")
78
+ image.write(stream)
79
+ # assert Image.read(stream.string).valid?
80
+ image.destroy!
41
81
  end
42
82
 
43
83
  def test_not_an_image
44
- assert_raise(MiniMagickError) do
45
- image = Image.new(NOT_AN_IMAGE_PATH)
84
+ image = Image.new(NOT_AN_IMAGE_PATH)
85
+ assert_equal false, image.valid?
86
+ image.destroy!
87
+ end
88
+
89
+ def test_throw_on_openining_not_an_image
90
+ assert_raise(MiniMagick::Invalid) do
91
+ image = Image.open(NOT_AN_IMAGE_PATH)
92
+ image.destroy
46
93
  end
47
94
  end
48
95
 
@@ -52,106 +99,166 @@ class ImageTest < Test::Unit::TestCase
52
99
  assert_equal 55, image[:height]
53
100
  assert_equal [150, 55], image[:dimensions]
54
101
  assert_match(/^gif$/i, image[:format])
102
+ image.destroy!
55
103
  end
56
104
 
57
105
  def test_tiff
58
106
  image = Image.new(TIFF_IMAGE_PATH)
59
107
  assert_equal "tiff", image[:format].downcase
60
- assert_equal 295, image[:width]
61
- assert_equal 242, image[:height]
62
- end
63
-
64
- def test_animation_pages
65
- image = Image.from_file(ANIMATION_PATH)
66
- image.format "png", 0
67
- assert_equal "png", image[:format].downcase
68
- end
69
-
70
- def test_animation_size
71
- image = Image.from_file(ANIMATION_PATH)
72
- assert_equal image[:size], 76631
108
+ assert_equal 50, image[:width]
109
+ assert_equal 41, image[:height]
110
+ image.destroy!
73
111
  end
74
112
 
75
113
  def test_gif_with_jpg_format
76
114
  image = Image.new(GIF_WITH_JPG_EXT)
77
115
  assert_equal "gif", image[:format].downcase
116
+ image.destroy!
78
117
  end
79
118
 
80
119
  def test_image_resize
81
- image = Image.from_file(SIMPLE_IMAGE_PATH)
120
+ image = Image.open(SIMPLE_IMAGE_PATH)
82
121
  image.resize "20x30!"
83
122
 
84
123
  assert_equal 20, image[:width]
85
124
  assert_equal 30, image[:height]
86
125
  assert_match(/^gif$/i, image[:format])
126
+ image.destroy!
87
127
  end
88
128
 
89
129
  def test_image_resize_with_minimum
90
- image = Image.from_file(SIMPLE_IMAGE_PATH)
130
+ image = Image.open(SIMPLE_IMAGE_PATH)
91
131
  original_width, original_height = image[:width], image[:height]
92
132
  image.resize "#{original_width + 10}x#{original_height + 10}>"
93
133
 
94
134
  assert_equal original_width, image[:width]
95
135
  assert_equal original_height, image[:height]
136
+ image.destroy!
96
137
  end
97
138
 
98
139
  def test_image_combine_options_resize_blur
99
- image = Image.from_file(SIMPLE_IMAGE_PATH)
140
+ image = Image.open(SIMPLE_IMAGE_PATH)
100
141
  image.combine_options do |c|
101
142
  c.resize "20x30!"
102
- c.blur 50
143
+ c.blur "50"
103
144
  end
104
145
 
105
146
  assert_equal 20, image[:width]
106
147
  assert_equal 30, image[:height]
107
148
  assert_match(/^gif$/i, image[:format])
149
+ image.destroy!
108
150
  end
109
-
151
+
110
152
  def test_image_combine_options_with_filename_with_minusses_in_it
111
- image = Image.from_file(SIMPLE_IMAGE_PATH)
153
+ image = Image.open(SIMPLE_IMAGE_PATH)
154
+ background = "#000000"
112
155
  assert_nothing_raised do
113
156
  image.combine_options do |c|
114
157
  c.draw "image Over 0,0 10,10 '#{MINUS_IMAGE_PATH}'"
158
+ c.thumbnail "300x500>"
159
+ c.background background
115
160
  end
116
161
  end
162
+ image.destroy!
117
163
  end
118
164
 
119
165
  def test_exif
120
- image = Image.from_file(EXIF_IMAGE_PATH)
166
+ image = Image.open(EXIF_IMAGE_PATH)
121
167
  assert_equal('0220', image["exif:ExifVersion"])
122
- image = Image.from_file(SIMPLE_IMAGE_PATH)
168
+ image = Image.open(SIMPLE_IMAGE_PATH)
123
169
  assert_equal('', image["EXIF:ExifVersion"])
170
+ image.destroy!
124
171
  end
125
172
 
126
173
  def test_original_at
127
- image = Image.from_file(EXIF_IMAGE_PATH)
174
+ image = Image.open(EXIF_IMAGE_PATH)
128
175
  assert_equal(Time.local('2005', '2', '23', '23', '17', '24'), image[:original_at])
129
- image = Image.from_file(SIMPLE_IMAGE_PATH)
176
+ image = Image.open(SIMPLE_IMAGE_PATH)
130
177
  assert_nil(image[:original_at])
178
+ image.destroy!
131
179
  end
132
180
 
133
181
  def test_tempfile_at_path
134
- image = Image.from_file(TIFF_IMAGE_PATH)
135
- assert_equal image.path, image.tempfile.path
182
+ image = Image.open(TIFF_IMAGE_PATH)
183
+ assert_equal image.path, image.instance_eval("@tempfile.path")
184
+ image.destroy!
136
185
  end
137
186
 
138
187
  def test_tempfile_at_path_after_format
139
- image = Image.from_file(TIFF_IMAGE_PATH)
188
+ image = Image.open(TIFF_IMAGE_PATH)
140
189
  image.format('png')
141
- assert_equal image.path, image.tempfile.path
190
+ assert_equal image.path, image.instance_eval("@tempfile.path")
191
+ image.destroy!
142
192
  end
143
193
 
144
194
  def test_previous_tempfile_deleted_after_format
145
- image = Image.from_file(TIFF_IMAGE_PATH)
195
+ image = Image.open(TIFF_IMAGE_PATH)
146
196
  before = image.path.dup
147
197
  image.format('png')
148
198
  assert !File.exist?(before)
199
+ image.destroy!
149
200
  end
150
201
 
151
- def test_mini_magick_error_when_referencing_not_existing_page
152
- image = Image.from_file(ANIMATION_PATH)
153
- assert_raises MiniMagickError do
154
- image.format('png', 31415)
202
+ def test_bad_method_bug
203
+ image = Image.open(TIFF_IMAGE_PATH)
204
+ begin
205
+ image.to_blog
206
+ rescue NoMethodError
207
+ assert true
155
208
  end
209
+ image.to_blob
210
+ assert true #we made it this far without error
211
+ image.destroy!
156
212
  end
213
+
214
+ def test_simple_composite
215
+ image = Image.open(EXIF_IMAGE_PATH)
216
+ result = image.composite(Image.open(TIFF_IMAGE_PATH)) do |c|
217
+ c.gravity "center"
218
+ end
219
+ assert `diff -s #{result.path} test/composited.jpg`.include?("identical")
220
+ end
221
+
222
+ # http://github.com/probablycorey/mini_magick/issues#issue/8
223
+ def test_issue_8
224
+ image = Image.open(SIMPLE_IMAGE_PATH)
225
+ assert_nothing_raised do
226
+ image.combine_options do |c|
227
+ c.sample "50%"
228
+ c.rotate "-90>"
229
+ end
230
+ end
231
+ image.destroy!
232
+ end
233
+
234
+ # http://github.com/probablycorey/mini_magick/issues#issue/15
235
+ def test_issue_15
236
+ image = Image.open(Pathname.new(SIMPLE_IMAGE_PATH))
237
+ output = Pathname.new("test.gif")
238
+ image.write(output)
239
+ ensure
240
+ FileUtils.rm("test.gif")
241
+ end
242
+
243
+ def test_throw_format_error
244
+ image = Image.open(SIMPLE_IMAGE_PATH)
245
+ assert_raise MiniMagick::Error do
246
+ image.combine_options do |c|
247
+ c.format "png"
248
+ end
249
+ end
250
+ image.destroy!
251
+ end
252
+
253
+ # testing that if copying files formatted from an animation fails,
254
+ # it raises an appropriate error
255
+ def test_throw_animation_copy_after_format_error
256
+ image = Image.open(ANIMATION_PATH)
257
+ FileUtils.stubs(:copy_file).raises(Errno::ENOENT)
258
+ assert_raises MiniMagick::Error do
259
+ image.format('png')
260
+ end
261
+ end
262
+
263
+
157
264
  end
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 ?>