Forum: Ruby Making screenshots with Ruby

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Thomas (Guest)
on 2005-12-26 21:13
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
Antonio C. (Guest)
on 2005-12-26 21:35
(Received via mailing list)
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,
anne001 (Guest)
on 2005-12-27 08:10
(Received via mailing list)
> 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.
Guest (Guest)
on 2005-12-29 00:52
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=...),
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.
Guest (Guest)
on 2005-12-29 01:01
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 :)
unknown (Guest)
on 2005-12-31 13:27
(Received via mailing list)
I would be interestde in how you solved this

Regards,
Bryan Webb
Timothy H. (Guest)
on 2005-12-31 13:48
(Received via mailing list)
removed_email_address@domain.invalid 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 :)
>
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] http://www.simplesystems.org/RMagick/doc/image1.ht...
This topic is locked and can not be replied to.