首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[python][原创]全屏截图的4种方法

[python][原创]全屏截图的4种方法

作者头像
云未归来
发布2025-07-18 17:18:40
发布2025-07-18 17:18:40
11400
代码可运行
举报
运行总次数:0
代码可运行

第一种:PIL

代码语言:javascript
代码运行次数:0
运行
复制
import time
import numpy as np
from PIL import ImageGrab
import cv2

beg = time.time()
img = ImageGrab.grab(bbox=None)
img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
end = time.time()
print(end - beg)
cv2.imshow('result',img)
cv2.waitKey(0)

第二种:windows api

代码语言:javascript
代码运行次数:0
运行
复制
import cv2
import win32gui, win32ui, win32con, win32api


hwin = win32gui.GetDesktopWindow()
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(False)
img = np.array(signedIntsArray).astype(dtype="uint8") # This is REALLY slow!
img.shape = (height,width,4)
srcdc.DeleteDC()
memdc.DeleteDC()
win32gui.ReleaseDC(hwin, hwindc)
win32gui.DeleteObject(bmp.GetHandle())
img = cv2.cvtColor(img, cv2.COLOR_RGBA2RGB)
cv2.imwrite('D:/333.jpg',img)

第三种:pyautogui

代码语言:javascript
代码运行次数:0
运行
复制
import pyautogui
import cv2

img = pyautogui.screenshot(region=None) # x,y,w,h
# img.save('screenshot.png')
img = cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR)
cv2.imwrite('D:/222.jpg',img)

第四种:pyqt5

代码语言:javascript
代码运行次数:0
运行
复制
import sys

from PyQt5.QtWidgets import QApplication

app = QApplication(sys.argv)
screen = QApplication.primaryScreen()
if screen is None:
    print('screen is None')
    exit(0)
originalPixmap = screen.grabWindow(QtWidgets.QApplication.desktop().winId())
originalPixmap.save('D:/444.jpg', 'png')
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档