tupalo-mini_magick 1.2.5 → 3.1

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.
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 ?>