Making screenshots with Ruby

Hello,

Can anyone help me with this one? Been looking for information about it,
but couldn't find any...

I want my program to make a screenshot of the screen (or better: a
specific window), and it should be able to get some data from the
screenshot (compare parts to other images)

Does anyone know how to tackle this problem?

Thanks,

Thomas

···

--
Posted via http://www.ruby-forum.com/.

Thomas wrote:

Hello,

Can anyone help me with this one? Been looking for information about it, but couldn't find any...

I want my program to make a screenshot of the screen (or better: a specific window), and it should be able to get some data from the screenshot (compare parts to other images)

Does anyone know how to tackle this problem?

Using the excellent RMagick:
http://redux.imagemagick.org/RMagick/doc/image1.html#capture

Cheers,

···

--
Antonio Cangiano
My Ruby blog: http://www.antoniocangiano.com

I want my program to make a screenshot of the screen

I think the rubycocoa example simpleapp does that, you could look at
how they do it.

Oh and forgot to add - I'm using them later with RMagick, so I'd want
them loaded in memory in a way that RMagick can understand them, but if
it has to it can be saved to file too :slight_smile:

···

--
Posted via http://www.ruby-forum.com/.

Unfortunately cacao is for mac, and the RMagick function is for x
(linux), while I need Windows... Any tips? Maybe there's a way using the
Win32 API?

I don't know how to create a "DestDC" for the bitblt function
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_0fzo.asp),
so I have no idea what to do... Currently I'm using a Visual Basic
program which takes a screenshot (using the clipboard, automatically
pressing the printscreen button) but ofcourse that's not a good
solution, and it needs harddrive access...

Thanks.

···

--
Posted via http://www.ruby-forum.com/.

I would be interestde in how you solved this

Regards,
Bryan Webb

guest@guest.com wrote:

···

Oh and forgot to add - I'm using them later with RMagick, so I'd want
them loaded in memory in a way that RMagick can understand them, but if
it has to it can be saved to file too :slight_smile:

--
Posted via http://www.ruby-forum.com/\.

guest@guest.com wrote:

Oh and forgot to add - I'm using them later with RMagick, so I'd want them loaded in memory in a way that RMagick can understand them, but if it has to it can be saved to file too :slight_smile:

There are a couple of ways to construct an RMagick image without reading an image file. If the screenshot data is in a Ruby string in one of the formats that ImageMagick/GraphicsMagick understands (JPEG, GIF, BMP, or one of the 80+ others) then you can use Image.from_blob[1].

If the screenshot data is in a Ruby string (or an instance of any class with a to_str method, such as NArray) and is simply "raw" pixel data in scanline order (left-to-right, top-to-bottom) you use the Image.import_pixels method. It's blindingly fast. (I'd give you a URL to the doc, but the online doc is sufficiently out-of-date that it doesn't describe how import_pixels exploits to_str. You can get the details from your local copy of the RMagick doc.)

[1] RMagick 1.15.0: class Image (class and instance methods, part 1)