asd
This commit is contained in:
@ -0,0 +1,62 @@
|
||||
import logging
|
||||
|
||||
from PIL import Image
|
||||
|
||||
from pyscreenshot.plugins.backend import CBackend
|
||||
from pyscreenshot.util import platform_is_osx
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
# based on:
|
||||
# http://stackoverflow.com/questions/69645/take-a-screenshot-via-a-python-script-linux
|
||||
|
||||
|
||||
class WxBackendError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
app = None
|
||||
|
||||
|
||||
class WxScreen(CBackend):
|
||||
name = "wx"
|
||||
# conflict with pygdk3
|
||||
# wx is never installed by default
|
||||
# pygdk3 is default on Gnome
|
||||
|
||||
def grab(self, bbox=None):
|
||||
if platform_is_osx():
|
||||
raise WxBackendError("osx not supported")
|
||||
import wx # type: ignore
|
||||
|
||||
global app
|
||||
if not app:
|
||||
app = wx.App()
|
||||
screen = wx.ScreenDC()
|
||||
size = screen.GetSize()
|
||||
if wx.__version__ >= "4":
|
||||
bmp = wx.Bitmap(size[0], size[1])
|
||||
else:
|
||||
bmp = wx.EmptyBitmap(size[0], size[1])
|
||||
mem = wx.MemoryDC(bmp)
|
||||
mem.Blit(0, 0, size[0], size[1], screen, 0, 0)
|
||||
del mem
|
||||
if hasattr(bmp, "ConvertToImage"):
|
||||
myWxImage = bmp.ConvertToImage()
|
||||
else:
|
||||
myWxImage = wx.ImageFromBitmap(bmp)
|
||||
im = Image.new("RGB", (myWxImage.GetWidth(), myWxImage.GetHeight()))
|
||||
if hasattr(Image, "frombytes"):
|
||||
# for Pillow
|
||||
im.frombytes(bytes(myWxImage.GetData()))
|
||||
else:
|
||||
# for PIL
|
||||
im.fromstring(myWxImage.GetData())
|
||||
if bbox:
|
||||
im = im.crop(bbox)
|
||||
return im
|
||||
|
||||
def backend_version(self):
|
||||
import wx
|
||||
|
||||
return wx.__version__
|
||||
Reference in New Issue
Block a user