本文整理汇总了Python中win32con.SRCCOPY属性的典型用法代码示例。如果您正苦于以下问题:Python win32con.SRCCOPY属性的具体用法?Python win32con.SRCCOPY怎么用?Python win32con.SRCCOPY使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类win32con
的用法示例。
在下文中一共展示了win32con.SRCCOPY属性的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __call__
# 需要导入模块: import win32con [as 别名]
# 或者: from win32con import SRCCOPY [as 别名]
def __call__( self, window, hdc, paint_struct ):
dirty = self.dirty( window )
if dirty:
self.update( window, hdc )
rect = self.rect or window.get_client_region()
roi = rect_intersect( rect, paint_struct[2] )
hdc_mem = win32gui.CreateCompatibleDC( hdc )
prior_bitmap = win32gui.SelectObject( hdc_mem, self.image.handle )
win32gui.BitBlt( hdc,
roi[0],
roi[1],
roi[2] - roi[0],
roi[3] - roi[1],
hdc_mem,
roi[0] - rect[0],
roi[1] - rect[1],
win32con.SRCCOPY )
win32gui.SelectObject( hdc_mem, prior_bitmap )
win32gui.DeleteDC( hdc_mem )
示例2: GetScreenImg
# 需要导入模块: import win32con [as 别名]
# 或者: from win32con import SRCCOPY [as 别名]
def GetScreenImg(self):
'''
Gets the screen of the window referenced by self.hwnd
'''
if self.hwnd is None:
raise Exception("HWND is none. HWND not called or invalid window name provided.")
self.l, self.t, self.r, self.b = win32gui.GetWindowRect(self.hwnd)
#Remove border around window (8 pixels on each side)
#Remove 4 extra pixels from left and right 16 + 8 = 24
w = self.r - self.l - self.br - self.bl
#Remove border on top and bottom (31 on top 8 on bottom)
#Remove 12 extra pixels from bottom 39 + 12 = 51
h = self.b - self.t - self.bt - self.bb
wDC = win32gui.GetWindowDC(self.hwnd)
dcObj = win32ui.CreateDCFromHandle(wDC)
cDC = dcObj.CreateCompatibleDC()
dataBitMap = win32ui.CreateBitmap()
dataBitMap.CreateCompatibleBitmap(dcObj, w, h)
cDC.SelectObject(dataBitMap)
#First 2 tuples are top-left and bottom-right of destination
#Third tuple is the start position in source
cDC.BitBlt((0,0), (w, h), dcObj, (self.bl, self.bt), win32con.SRCCOPY)
bmInfo = dataBitMap.GetInfo()
im = np.frombuffer(dataBitMap.GetBitmapBits(True), dtype = np.uint8)
dcObj.DeleteDC()
cDC.DeleteDC()
win32gui.ReleaseDC(self.hwnd, wDC)
win32gui.DeleteObject(dataBitMap.GetHandle())
#Bitmap has 4 channels like: BGRA. Discard Alpha and flip order to RGB
#31 pixels from border on top, 8 on bottom
#8 pixels from border on the left and 8 on right
#Remove 1 additional pixel from left and right so size is 1278 | 9
#Remove 14 additional pixels from bottom so size is 786 | 6
#return im.reshape(bmInfo['bmHeight'], bmInfo['bmWidth'], 4)[31:-22, 9:-9, -2::-1]
#For 800x600 images:
#Remove 12 pixels from bottom + border
#Remove 4 pixels from left and right + border
return im.reshape(bmInfo['bmHeight'], bmInfo['bmWidth'], 4)[:, :, -2::-1]
示例3: grab_screen
# 需要导入模块: import win32con [as 别名]
# 或者: from win32con import SRCCOPY [as 别名]
def grab_screen(region=None):
hwin = win32gui.GetDesktopWindow()
if region:
left,top,x2,y2 = region
width = x2 - left + 1
height = y2 - top + 1
else:
width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)
left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)
top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)
hwindc = win32gui.GetWindowDC(hwin)
srcdc = win32ui.CreateDCFromHandle(hwindc)
memdc = srcdc.CreateCompatibleDC()
bmp = win32ui.CreateBitmap()
bmp.CreateCompatibleBitmap(srcdc, width, height)
memdc.SelectObject(bmp)
memdc.BitBlt((0, 0), (width, height), srcdc, (left, top), win32con.SRCCOPY)
signedIntsArray = bmp.GetBitmapBits(True)
img = np.fromstring(signedIntsArray, dtype='uint8')
img.shape = (height,width,4)
srcdc.DeleteDC()
memdc.DeleteDC()
win32gui.ReleaseDC(hwin, hwindc)
win32gui.DeleteObject(bmp.GetHandle())
return cv2.cvtColor(img, cv2.COLOR_BGRA2RGB)
示例4: grab_screen
# 需要导入模块: import win32con [as 别名]
# 或者: from win32con import SRCCOPY [as 别名]
def grab_screen(region=None):
hwin = win32gui.GetDesktopWindow()
if region:
left,top,x2,y2 = region
width = x2 - left + 1
height = y2 - top + 1
else:
width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)
left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)
top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)
hwindc = win32gui.GetWindowDC(hwin)
srcdc = win32ui.CreateDCFromHandle(hwindc)
memdc = srcdc.CreateCompatibleDC()
bmp = win32ui.CreateBitmap()
bmp.CreateCompatibleBitmap(srcdc, width, height)
memdc.SelectObject(bmp)
memdc.BitBlt((0, 0), (width, height), srcdc, (left, top), win32con.SRCCOPY)
signedIntsArray = bmp.GetBitmapBits(True)
img = np.fromstring(signedIntsArray, dtype='uint8')
img.shape = (height,width,4)
srcdc.DeleteDC()
memdc.DeleteDC()
win32gui.ReleaseDC(hwin, hwindc)
win32gui.DeleteObject(bmp.GetHandle())
return cv2.cvtColor(img, cv2.COLOR_BGRA2RGB)
示例5: grab_screen
# 需要导入模块: import win32con [as 别名]
# 或者: from win32con import SRCCOPY [as 别名]
def grab_screen(region=None):
hwin = win32gui.GetDesktopWindow()
if region:
left,top,x2,y2 = region
width = x2 - left + 1
height = y2 - top + 1
else:
width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)
left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)
top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)
hwindc = win32gui.GetWindowDC(hwin)
srcdc = win32ui.CreateDCFromHandle(hwindc)
memdc = srcdc.CreateCompatibleDC()
bmp = win32ui.CreateBitmap()
bmp.CreateCompatibleBitmap(srcdc, width, height)
memdc.SelectObject(bmp)
memdc.BitBlt((0, 0), (width, height), srcdc, (left, top), win32con.SRCCOPY)
signedIntsArray = bmp.GetBitmapBits(True)
img = np.fromstring(signedIntsArray, dtype='uint8')
img.shape = (height,width,4)
srcdc.DeleteDC()
memdc.DeleteDC()
win32gui.ReleaseDC(hwin, hwindc)
win32gui.DeleteObject(bmp.GetHandle())
return cv2.cvtColor(img, cv2.COLOR_BGRA2RGB)
示例6: screen
# 需要导入模块: import win32con [as 别名]
# 或者: from win32con import SRCCOPY [as 别名]
def screen(self):
"""PIL Image of current window screen.
reference: https://msdn.microsoft.com/en-us/library/dd183402(v=vs.85).aspx"""
hwnd = win32gui.GetDesktopWindow()
left, top, right, bottom = self.rect
width, height = right-left, bottom-top
# copy bits to temporary dc
win32gui.BitBlt(self._hdcmem, 0, 0, width, height,
self._hdcwin, left, top, win32con.SRCCOPY)
# read bits into buffer
windll.gdi32.GetDIBits(self._hdcmem, self._hbmp.handle, 0, height, self._buf, ctypes.byref(self._bi), win32con.DIB_RGB_COLORS)
# make a PIL Image
img = Image.frombuffer('RGB', (width, height), self._buf, 'raw', 'BGRX', 0, 1)
img = img.transpose(Image.FLIP_TOP_BOTTOM)
return img
示例7: screen_cv2
# 需要导入模块: import win32con [as 别名]
# 或者: from win32con import SRCCOPY [as 别名]
def screen_cv2(self):
"""cv2 Image of current window screen"""
hwnd = win32gui.GetDesktopWindow()
left, top, right, bottom = self.rect
width, height = right-left, bottom-top
# copy bits to temporary dc
win32gui.BitBlt(self._hdcmem, 0, 0, width, height,
self._hdcwin, left, top, win32con.SRCCOPY)
# read bits into buffer
windll.gdi32.GetDIBits(self._hdcmem, self._hbmp.handle, 0, height, self._buf, ctypes.byref(self._bi), win32con.DIB_RGB_COLORS)
# make a cv2 Image
arr = np.fromstring(self._buf, dtype=np.uint8)
img = arr.reshape(height, width, 4)
img = img[::-1,:, 0:3]
return img
示例8: window_full_shot
# 需要导入模块: import win32con [as 别名]
# 或者: from win32con import SRCCOPY [as 别名]
def window_full_shot(self, file_name=None, gray=0):
"""
窗口截图
:param file_name=None: 截图文件的保存名称
:param gray=0: 是否返回灰度图像,0:返回BGR彩色图像,其他:返回灰度黑白图像
:return: file_name为空则返回RGB数据
"""
try:
if (not hasattr(self, 'memdc')):
self.init_mem()
if self.client == 0:
self.memdc.BitBlt((0, 0), (self._client_w, self._client_h), self.srcdc,
(self._border_l, self._border_t), win32con.SRCCOPY)
else:
self.memdc.BitBlt((0, -35), (self._client_w, self._client_h), self.srcdc,
(self._border_l, self._border_t), win32con.SRCCOPY)
if file_name != None:
self.bmp.SaveBitmapFile(self.memdc, file_name)
return
else:
signedIntsArray = self.bmp.GetBitmapBits(True)
img = np.fromstring(signedIntsArray, dtype='uint8')
img.shape = (self._client_h, self._client_w, 4)
#cv2.imshow("image", cv2.cvtColor(img, cv2.COLOR_BGRA2GRAY))
# cv2.waitKey(0)
if gray == 0:
return cv2.cvtColor(img, cv2.COLOR_BGRA2BGR)
else:
return cv2.cvtColor(img, cv2.COLOR_BGRA2GRAY)
except Exception:
self.init_mem()
logging.warning('window_full_shot执行失败')
a = traceback.format_exc()
logging.warning(a)
示例9: screenshot
# 需要导入模块: import win32con [as 别名]
# 或者: from win32con import SRCCOPY [as 别名]
def screenshot(filename, hwnd=None):
"""
Take the screenshot of Windows app
Args:
filename: file name where to store the screenshot
hwnd:
Returns:
bitmap screenshot file
"""
# import ctypes
# user32 = ctypes.windll.user32
# user32.SetProcessDPIAware()
if hwnd is None:
"""all screens"""
hwnd = win32gui.GetDesktopWindow()
# get complete virtual screen including all monitors
w = win32api.GetSystemMetrics(SM_CXVIRTUALSCREEN)
h = win32api.GetSystemMetrics(SM_CYVIRTUALSCREEN)
x = win32api.GetSystemMetrics(SM_XVIRTUALSCREEN)
y = win32api.GetSystemMetrics(SM_YVIRTUALSCREEN)
else:
"""window"""
rect = win32gui.GetWindowRect(hwnd)
w = abs(rect[2] - rect[0])
h = abs(rect[3] - rect[1])
x, y = 0, 0
hwndDC = win32gui.GetWindowDC(hwnd)
mfcDC = win32ui.CreateDCFromHandle(hwndDC)
saveDC = mfcDC.CreateCompatibleDC()
saveBitMap = win32ui.CreateBitmap()
saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)
saveDC.SelectObject(saveBitMap)
saveDC.BitBlt((0, 0), (w, h), mfcDC, (x, y), win32con.SRCCOPY)
# saveBitMap.SaveBitmapFile(saveDC, filename)
bmpinfo = saveBitMap.GetInfo()
bmpstr = saveBitMap.GetBitmapBits(True)
pil_image = Image.frombuffer(
'RGB',
(bmpinfo['bmWidth'], bmpinfo['bmHeight']),
bmpstr, 'raw', 'BGRX', 0, 1)
cv2_image = pil_2_cv2(pil_image)
mfcDC.DeleteDC()
saveDC.DeleteDC()
win32gui.ReleaseDC(hwnd, hwndDC)
win32gui.DeleteObject(saveBitMap.GetHandle())
return cv2_image
示例10: window_part_shot
# 需要导入模块: import win32con [as 别名]
# 或者: from win32con import SRCCOPY [as 别名]
def window_part_shot(self, pos1, pos2, file_name=None, gray=0):
"""
窗口区域截图
:param pos1: (x,y) 截图区域的左上角坐标
:param pos2: (x,y) 截图区域的右下角坐标
:param file_name=None: 截图文件的保存路径
:param gray=0: 是否返回灰度图像,0:返回BGR彩色图像,其他:返回灰度黑白图像
:return: file_name为空则返回RGB数据
"""
w = pos2[0]-pos1[0]
h = pos2[1]-pos1[1]
hwindc = win32gui.GetWindowDC(self.hwnd)
srcdc = win32ui.CreateDCFromHandle(hwindc)
memdc = srcdc.CreateCompatibleDC()
bmp = win32ui.CreateBitmap()
bmp.CreateCompatibleBitmap(srcdc, w, h)
memdc.SelectObject(bmp)
if self.client == 0:
memdc.BitBlt((0, 0), (w, h), srcdc,
(pos1[0]+self._border_l, pos1[1]+self._border_t), win32con.SRCCOPY)
else:
memdc.BitBlt((0, -35), (w, h), srcdc,
(pos1[0]+self._border_l, pos1[1]+self._border_t), win32con.SRCCOPY)
if file_name != None:
bmp.SaveBitmapFile(memdc, file_name)
srcdc.DeleteDC()
memdc.DeleteDC()
win32gui.ReleaseDC(self.hwnd, hwindc)
win32gui.DeleteObject(bmp.GetHandle())
return
else:
signedIntsArray = bmp.GetBitmapBits(True)
img = np.fromstring(signedIntsArray, dtype='uint8')
img.shape = (h, w, 4)
srcdc.DeleteDC()
memdc.DeleteDC()
win32gui.ReleaseDC(self.hwnd, hwindc)
win32gui.DeleteObject(bmp.GetHandle())
#cv2.imshow("image", cv2.cvtColor(img, cv2.COLOR_BGRA2BGR))
# cv2.waitKey(0)
if gray == 0:
return cv2.cvtColor(img, cv2.COLOR_BGRA2BGR)
else:
return cv2.cvtColor(img, cv2.COLOR_BGRA2GRAY)