Python PIL库ImageGrab模块使用指南:屏幕截图与剪贴板读取

周叙
周叙
发布时间:2026-10-13 | 2人浏览过
原创

本文详细介绍Python图像处理库PIL中ImageGrab模块的使用方法。该模块专用于Windows系统,支持抓取当前屏幕快照及读取剪贴板内容。文章涵盖grab()和grabclipboard()两个核心函数的定义、参数说明及代码示例,并辅助讲解isinstance类型检查函数的应用,帮助开发者实现高效的屏幕捕获与图像数据处理。

ImageGrab模块概述与系统限制

ImageGrab模块的主要功能是将当前屏幕显示内容或剪贴板中的数据复制到PIL图像内存中。

需要注意的是,当前版本的ImageGrab模块仅支持Windows操作系统。

一、ImageGrab模块的核心函数

核心函数详解:Grab与Grabclipboard

1. Grab函数

基本定义:ImageGrab.grab() ⇒ image

带参数定义:ImageGrab.grab(bbox) ⇒ image

功能说明:该函数自版本1.1.3引入,用于截取当前屏幕的快照,并返回一个模式为“RGB”的图像对象。通过指定bbox参数(边界框),可以限制截取屏幕的特定区域。

具体示例如下:


>>> from PIL importImage, ImageGrab
>>> im =ImageGrab.grab() 
>>> im.size 
(1366, 768) 
>>> im.mode 
'RGB' 
>>> im.show() 
>>> im0 =ImageGrab.grab((300, 100, 1400, 600)) 
>>> im0.show()
>>> im0.size
(1100, 500)
>>> im0.mode
'RGB'

在上述示例中,图像im截取了整个屏幕,尺寸为1366x768,对应测试显示器的当前分辨率。图像im0则截取了坐标区域(300, 100, 1400, 600)内的内容,大小为1100x500。

图像im的显示效果如下:

                             

图像im0的显示效果如下:

2. Grabclipboard函数

基本定义:ImageGrab.grabclipboard() ⇒ image or list of strings or None

功能说明:该函数自版本1.1.4引入,用于截取当前剪贴板的内容。如果剪贴板包含图像数据,则返回模式为“RGB”的图像对象;如果包含文件列表,则返回文件名列表;若剪贴板中无图像数据,则返回None。

开发者可以使用Python内置的isinstance()函数来判断返回值是否为有效的图像对象或其他类型的数据。

具体示例如下:


from PIL import Image, ImageGrab
 
im = ImageGrab.grabclipboard() 
if isinstance(im, Image.Image):
 print "Image: size : %s, mode: %s" % (im.size, im.mode)
 im.save("D:\\Document\\mdoc\\python\\pic\\12\\grab_grabclipboard.jpg")
elif im:
 for filename in im:
  try:
   print "filename: %s" % filename
   im = Image.open(filename)   
  except IOError:
   pass #ignore this file
  else:
   print "ImageList: size : %s, mode: %s" % (im.size, im.mode)
else:
 print "clipboard is empty."

经过实验验证,若在画图工具中打开图像并选中部分区域进行剪切粘贴,该函数将返回一张模式为“RGB”的图像。若在文件夹中直接复制图像文件,则函数返回“clipboard is empty.”,表明此时获取的剪贴板内容为空或非图像数据。

本次测试的运行结果如下:

>>>================================ RESTART ================================ >>> Image: size : (566, 335),mode: RGB >>> im.size (566, 335) >>> im.mode 'RGB' >>> im.show()

图像im的显示效果如下:

 

辅助工具:isinstance类型检查函数

二、Python中的isinstance函数解析

isinstance是Python语言中的一个内置函数,常用于类型检查。

其语法格式如下:

isinstance(object, classinfo)

如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例,则返回True。如果object不属于给定的类型对象,则结果始终为False。

当classinfo不表示单个类(类型对象)时,它可以是一个类的元组,或者递归地包含由数据类型构成的元组。其他序列类型不被允许作为classinfo参数。

如果classinfo不是数据类型或由数据类型构成的元组,调用该函数将引发TypeError异常。

具体示例如下:


>>>isinstance(100, int)
True
 
>>>isinstance(10.5, int)
False
 
>>>isinstance(10.5, float)
True
 
>>>isinstance(10.5, int)
False

>>>isinstance(10.5, (int,float)) 
True

屏幕截图操作

示例代码实现如下:


from PIL import Image
from PIL import ImageGrab
 
size = (300,300,400,400)
img = ImageGrab.grab(size)
img.save("cut.jpg")
img.show()

至此,关于Python图像处理库PIL中ImageGrab模块的详细介绍已完成。如需了解更多PIL ImageGrab模块相关内容,请查阅本站过往文章或继续浏览后续文章。感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表