Python Pillow - ImageGrab.grabclipboard() 函数



PIL.ImageGrab.grabclipboard() 函数用于获取剪贴板中的图像快照(如果存在)。

在 Linux 上,该函数需要 wl-paste 或 xclip。

语法

以下是函数的语法:

PIL.ImageGrab.grabclipboard()

返回值

此函数的返回值根据操作系统而有所不同。以下是关键细节:

  • Windows - 返回图像、文件名列表或 None(如果剪贴板不包含图像数据或文件名)。如果返回列表,文件名不一定表示图像文件。

  • Mac - 返回图像或 None(如果剪贴板不包含图像数据)。

  • Linux - 返回图像。

示例

示例 1

此代码是一个简单的示例,演示如何使用 grabclipboard() 方法从剪贴板获取图像并显示它。

from PIL import Image, ImageGrab

# Use the grabclipboard method to capture the clipboard image
clipboard_image = ImageGrab.grabclipboard()

# Display the captured image
clipboard_image.show()

输出

AttributeError: 'NoneType' object has no attribute 'show'

此错误表示没有图像数据复制到剪贴板。

示例 2

为了防止 AttributeError 并处理 grabclipboard() 返回 None 的情况,可以在尝试使用 show() 方法之前检查结果是否不为 None。

from PIL import ImageGrab

# Take a snapshot of the clipboard image
clipboard_image = ImageGrab.grabclipboard()

# Check clipboard_image object
if clipboard_image:
   # Display or process the clipboard image as needed
   clipboard_image.show()
else:
   print("The clipboard does not contain image data.")

输出

clipboard image

此示例防止了 AttributeError 并处理了剪贴板包含非图像数据(例如文本)的情况。

示例 3

此示例与前一个示例类似,但它显式地检查剪贴板对象是否为图像,而不是直接检查剪贴板对象是否不为 None。这使用了 isinstance() 函数。

from PIL import ImageGrab

# Take a snapshot of the clipboard image
clipboard_image = ImageGrab.grabclipboard()

# Check for the clipboard object is an image or not
if isinstance(clipboard_image, Image.Image):
    
   # Display or save the clipboard image
   clipboard_image.show()
else:
   print("The clipboard does not contain image data.")

输出

snapshot clipboard image
python_pillow_function_reference.htm
广告