ponty / pyscreenshot

Python screenshot library, replacement for the Pillow ImageGrab module on Linux.
BSD 2-Clause "Simplified" License
499 stars 89 forks source link

All backends fail in virtualbox linux 10.04 guest on Windows 7 host. #7

Closed jlettvin closed 11 years ago

jlettvin commented 12 years ago

I need this for a python magnifier and markup app I am writing. All backends implemented by pyscreenshot fail.

I have spent almost a week trying to ferret out any workable method from google searches. The various commands (gnome-panel-screenshot, xwd, ksnapshot, scrot, shutter, etc...) all fail to deliver anything but an entirely black image (sometimes with mouse cursor) except one.

I discovered exactly one way that works now when using pygtk. I window.hide() all windows, and gtk.gdk.flush(), then $ import -crop 128x128+0+0 -window root screenshot.png # Example sizing

It is not satisfying because it takes about 1.2 seconds to deliver even a small window like the above. I would prefer to do real-time acquire/magnify/display (>20FPS).

I have code implementing this and more (if anybody's interested). I use pygtk and pycairo to create a transparent window through which I see what I want. No method I have discovered will capture that content directly. So I calculate exactly where the window is, hide it, use the 'import' command, unhide the window, then manipulate the image created by the import command to fill the window. Very inelegant, but I see no recourse.

Please help with a higher performance way to fetch the image.

ponty commented 12 years ago

All back-ends work in my test.

Host: Linux 2.6.35-32-generic-pae Ubuntu i686 GNU/Linux Guest: xubuntu-10.04.2-desktop-i386.iso Virtualbox: 4.1.4.14

You may have a virtualbox or video driver problem, try to test on a different computer or change video settings (turn off video acceleration).

Performence test is integrated in pyscreenshot, check the documentation. (http://ponty.github.com/pyscreenshot/speed.html)

My best result for a small window: 0.06 s using wx, which is 15FPS

If you need better performance try to port the wx back-end code to a C++ extension module.

Pyscreenshot is only a wrapper, and performence is not a goal for this project.

jlettvin commented 12 years ago

Thank you.

You nailed it.

3D video extensions also needed to go.

On Sat, May 5, 2012 at 2:36 AM, ponty < reply@reply.github.com

wrote:

All back-ends work in my test.

Host: Linux 2.6.35-32-generic-pae Ubuntu i686 GNU/Linux Guest: xubuntu-10.04.2-desktop-i386.iso Virtualbox: 4.1.4.14

You may have a virtualbox or video driver problem, try to test on a different computer or change video settings (turn off video acceleration).

Performence test is integrated in pyscreenshot, check the documentation. (http://ponty.github.com/pyscreenshot/speed.html)

My best result for a small window: 0.06 s using wx, which is 15FPS

If you need better performance try to port the wx back-end code to a C++ extension module.

Pyscreenshot is only a wrapper, and performence is not a goal for this project.


Reply to this email directly or view it on GitHub: https://github.com/ponty/pyscreenshot/issues/7#issuecomment-5524920

This e-mail is from Jonathan D. Lettvin, and may contain information that is confidential or privileged. If you are not the intended recipient, do not read, copy or distribute the e-mail or any attachments. Instead, please notify the sender and delete the e-mail and any attachments. Thank you.

Jonathan D. Lettvin