tsuraan wrote: > I wrote a quick rhtml file that can read a file and dump it to the standard out: > > <% > require 'cgi' > cgi = CGI::new > fname = File.split(cgi['img'])[1].untaint > fname = "zmachine.jpg" if fname=="" > cgi.out "image/jpeg" do File.open("imgs/"+fname).read end > %> > > Basically, you give it the name of an image in my images directory, > and it shows you the image. So, I wanted to make it work with RMagic, > so it would show you a thumbnail of the image, instead of the real > thing (zmachine.jpg, for example, is 2400x1595 pixels). The code I > have is: > > <% > require 'cgi' > require 'RMagick' > cgi = CGI::new > fname = File.split(cgi['img'])[1].untaint > fname = "zmachine.jpg" if fname=="" > cgi.header "image/jpeg" > img = Magick::Image::read("imgs/"+fname).first > img.change_geometry("480x480") { |rows, cols, img| > thumb = img.sample(rows, cols) > thumb.write $> > } > %> > > But this doesn't work; it looks like RMagick::Image::write actually > checks the type of the argument, and since $> isn't really a file, it > won't write to it. Is there a way to get RMagick to dump what it > would write to a file into a stream instead, so I can do a rescale and > show the output purely from within ruby? > > Check out Image#to_blob http://www.simplesystems.org/RMagick/doc/image3.html#to_blob