最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python根據(jù)Windows窗口截圖的幾種實(shí)現(xiàn)方法

 更新時(shí)間:2025年10月09日 09:11:10   作者:detayun  
文章介紹了Windows下Python截圖的四種方法:PIL庫(簡(jiǎn)單快速)、win32gui(精準(zhǔn)控制窗口)、mss庫(跨平臺(tái)高性能)及win32API處理隱藏窗口,需注意窗口標(biāo)題匹配、權(quán)限問題和DPI縮放調(diào)整,推薦常規(guī)截圖用PIL或mss,需精準(zhǔn)控制時(shí)使用win32API,需要的朋友可以參考下

在Windows系統(tǒng)下,Python可通過以下方法實(shí)現(xiàn)窗口截圖,具體方案取決于需求精度和場(chǎng)景:

1. 使用PIL庫截取全屏或指定區(qū)域

from PIL import ImageGrab

# 截取整個(gè)屏幕
screenshot = ImageGrab.grab()
screenshot.save("full_screen.png")

# 截取指定區(qū)域(左上角坐標(biāo)+寬高)
crop_area = (100, 100, 500, 400)  # left, top, right, bottom
cropped = ImageGrab.grab(bbox=crop_area)
cropped.save("partial_screen.png")

2. 結(jié)合win32gui精準(zhǔn)截取指定窗口

需先安裝pywin32庫:

pip install pywin32

代碼示例:

import win32gui
from PIL import ImageGrab

# 獲取窗口句柄
hwnd = win32gui.FindWindow(None, "記事本")  # 窗口標(biāo)題

# 獲取窗口位置和尺寸
left, top, right, bot = win32gui.GetWindowRect(hwnd)
width = right - left
height = bot - top

# 截取窗口區(qū)域
img = ImageGrab.grab(bbox=(left, top, right, bot))
img.save("window_screenshot.png")

3. 使用mss庫(跨平臺(tái)高性能)

安裝:

pip install mss

代碼示例:

import mss

with mss.mss() as sct:
    # 截取指定顯示器編號(hào)的屏幕
    monitor = sct.monitors[1]
    sct_img = sct.grab(monitor)
    mss.tools.to_png(sct_img.rgb, sct_img.size, output="mss_screenshot.png")

4. 截取隱藏窗口(需配合win32API)

對(duì)于非最小化窗口,可通過win32gui獲取窗口DC后截圖:

import win32gui
import win32ui
import win32con
from PIL import Image

hwnd = win32gui.FindWindow(None, "計(jì)算器")

# 創(chuàng)建設(shè)備上下文
hdc = win32gui.GetDC(hwnd)
mdc = win32gui.CreateCompatibleDC(hdc)

# 獲取窗口尺寸
left, top, right, bot = win32gui.GetWindowRect(hwnd)
w, h = right - left, bot - top

# 創(chuàng)建位圖
bitmap = win32ui.CreateBitmap()
bitmap.CreateCompatibleBitmap(hdc, w, h)
win32gui.SelectObject(mdc, bitmap.GetHandle())

# 復(fù)制屏幕區(qū)域
win32gui.BitBlt(mdc, 0, 0, w, h, hdc, 0, 0, win32con.SRCCOPY)

# 保存為圖片
bmp_info = bitmap.GetInfo()
bmp_str = bitmap.GetBitmapBits(True)
pil_img = Image.frombuffer(
    'RGB',
    (bmp_info['bmWidth'], bmp_info['bmHeight']),
    bmp_str,
    'raw',
    'BGRX',
    0,
    1
)
pil_img.save("hidden_window.png")

# 釋放資源
win32gui.DeleteObject(bitmap.GetHandle())
win32gui.DeleteDC(mdc)
win32gui.ReleaseDC(hwnd, hdc)

關(guān)鍵注意事項(xiàng):

  1. 窗口標(biāo)題匹配FindWindow需精確匹配窗口標(biāo)題,可通過Spy++工具獲取實(shí)際標(biāo)題
  2. 權(quán)限問題:部分窗口截圖需要管理員權(quán)限
  3. 性能對(duì)比
    • PIL:簡(jiǎn)單快速,適合簡(jiǎn)單場(chǎng)景
    • mss:跨平臺(tái),支持多顯示器,性能優(yōu)異
    • win32API:精準(zhǔn)控制,可處理隱藏窗口
  4. DPI縮放:高DPI屏幕需額外處理縮放比例,可通過ctypes獲取系統(tǒng)縮放系數(shù)調(diào)整坐標(biāo)

根據(jù)具體需求選擇方案,常規(guī)截圖推薦使用PIL或mss,精準(zhǔn)控制推薦win32API方案。

到此這篇關(guān)于Python根據(jù)Windows窗口截圖的幾種實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Python根據(jù)Windows窗口截圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python通過poll實(shí)現(xiàn)異步IO的方法

    Python通過poll實(shí)現(xiàn)異步IO的方法

    這篇文章主要介紹了Python通過poll實(shí)現(xiàn)異步IO的方法,實(shí)例分析了poll方法實(shí)現(xiàn)異步IO的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • pygame學(xué)習(xí)筆記(2):畫點(diǎn)的三種方法和動(dòng)畫實(shí)例

    pygame學(xué)習(xí)筆記(2):畫點(diǎn)的三種方法和動(dòng)畫實(shí)例

    這篇文章主要介紹了pygame學(xué)習(xí)筆記(2):畫點(diǎn)的三種方法和動(dòng)畫實(shí)例,本文講解了單個(gè)像素(畫點(diǎn))、連接多個(gè)點(diǎn)形成線、引用圖像、動(dòng)畫完整實(shí)例,需要的朋友可以參考下
    2015-04-04
  • Python+Pygame實(shí)戰(zhàn)之瘋狂吃水果游戲的實(shí)現(xiàn)

    Python+Pygame實(shí)戰(zhàn)之瘋狂吃水果游戲的實(shí)現(xiàn)

    吃豆人和切水果這兩個(gè)游戲相信大家都不陌生吧,本文將利用Python中的Pygame模塊編寫出一款結(jié)合吃豆人+切水果的新游戲:瘋狂吃水果,感興趣的可以了解一下
    2022-06-06
  • Python實(shí)現(xiàn)CAN報(bào)文轉(zhuǎn)換工具教程

    Python實(shí)現(xiàn)CAN報(bào)文轉(zhuǎn)換工具教程

    這篇文章主要介紹了Python實(shí)現(xiàn)CAN報(bào)文轉(zhuǎn)換工具教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 三種Matplotlib中動(dòng)態(tài)更新繪圖的方法總結(jié)

    三種Matplotlib中動(dòng)態(tài)更新繪圖的方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了如何隨著數(shù)據(jù)的變化動(dòng)態(tài)更新Matplotlib(Python的數(shù)據(jù)可視化庫)圖,文中介紹了常用的三種方法,希望對(duì)大家有所幫助
    2024-04-04
  • Python內(nèi)置函數(shù)int()用法簡(jiǎn)單介紹

    Python內(nèi)置函數(shù)int()用法簡(jiǎn)單介紹

    這篇文章主要給大家介紹了關(guān)于Python內(nèi)置函數(shù)int()用法的相關(guān)資料,int()函數(shù)常用來把其他類型轉(zhuǎn)換為整數(shù),文中通過代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-05-05
  • Python獲取svn版本信息

    Python獲取svn版本信息

    本文主要介紹了Python獲取svn版本信息,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Python中使用bidict模塊雙向字典結(jié)構(gòu)的奇技淫巧

    Python中使用bidict模塊雙向字典結(jié)構(gòu)的奇技淫巧

    bidict模塊通過一對(duì)一映射結(jié)構(gòu)的處理為Pyhton帶來雙向字典,能夠更加利用Python的切片功能,這里我們就來學(xué)習(xí)Python中使用bidict模塊雙向字典結(jié)構(gòu)的奇技淫巧:
    2016-07-07
  • Python Grid使用和布局詳解

    Python Grid使用和布局詳解

    這篇文章主要為大家詳細(xì)介紹了Python Grid使用和布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • PyTorch環(huán)境配置及安裝過程

    PyTorch環(huán)境配置及安裝過程

    這篇文章主要介紹了PyTorch環(huán)境配置及安裝,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

托里县| 博白县| 沅江市| 禹州市| 五常市| 凉城县| 英德市| 繁峙县| 东台市| 石屏县| 当阳市| 白河县| 柘城县| 阿坝县| 宁波市| 庄浪县| 通州市| 德州市| 南郑县| 德安县| 浮山县| 潮安县| 广安市| 武乡县| 黑山县| 嘉祥县| 揭阳市| 克什克腾旗| 芜湖县| 剑阁县| 文昌市| 肃南| 临海市| 勐海县| 南岸区| 雷波县| 仁化县| 文山县| 集贤县| 海南省| 岳池县|