Python图像处理库PIL的ImageGrab模块介绍详解
作者:icamera0 发布时间:2023-11-16 18:22:11
ImageGrab模块用于将当前屏幕的内容或者剪贴板上的内容拷贝到PIL图像内存。
当前版本只支持windows系统。
一、ImageGrab模块的函数
1、 Grab
定义:ImageGrab.grab()⇒ image
ImageGrab.grab(bbox) ⇒ image
含义:(New in 1.1.3)抓取当前屏幕的快照,返回一个模式为“RGB”的图像。参数边界框用于限制只拷贝当前屏幕的一部分区域。
例子:
>>> 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
含义:(New in 1.1.4)抓取当前剪贴板的快照,返回一个模式为“RGB”的图像或者文件名称的列表。如果剪贴板不包括图像数据,这个函数返回空。
用户可以使用函数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如下:
二、Python中的isinstance函数
isinstance是Python中的一个内建函数
语法:
isinstance(object,classinfo)
如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例,返回True。如果object不是一个给定类型的对象,则返回结果总是False。
如果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()
来源:https://blog.csdn.net/icamera0/article/details/50763010


猜你喜欢
- calccalc 是一个我们想要做剖析(性能分析)的异步函数。按照惯例,它的最后一个参数是一个callback。我们像这样使用 calc:c
- Python tcp socket编程详解初学脚本语言Python,测试可用的tcp通讯程序:服务器:#!/usr/bin/env pyth
- 本文实例讲述了python中偏函数partial用法。分享给大家供大家参考。具体如下:函数在执行时,要带上所有必要的参数进行调用。但是,有时
- 一直以来,JS前端代码因为必须经过IE明文解析,某些加密的JS如:JScript.Encode也因为树大招风,早就被人破解了。还有些加密的手
- 使用wordcloud模块,生成云图,测试文本为:Betty Botter bought some butter but she said
- 1.概述最近项目需要使用程序实现数学微积分,最初想用java实现,后来发现可用文档太少,实现比较麻烦,后来尝试使用python实现,代码量较
- 一、关于Python操作数据库的概述Python所有的数据库接口程序都在一定程度上遵守 Python DB-API 规范。DB-API定义了
- 统计表中常常以本年累计、上年同期(累计)、当期(例如当月)完成、上月完成为统计数据,并进行同比、环比分析。如下月报统计表所示样例,本文将使用
- 很多人说设计是力求细节的,在网页设计里表达出的细节就是图标。图标在一个设计里带来了额外的注解并且使设计里的对象和元素引起用户的注意。以下介绍
- 本文实例为大家分享了python实现决策树的具体代码,供大家参考,具体内容如下算法优缺点:优点:计算复杂度不高,输出结果易于理解,对中间值缺
- 链表的反转是一个很常见、很基础的数据结构题,输入一个单向链表,输出逆序反转后的链表,如图:上面的链表转换成下面的链表。实现链表反转有两种方式
- 如下所示:# -*- coding:UTF-8 -*-__author__ = "zhangguodong"__time
- 为了安全起见,需要经常对数据库作备份,或者还原。对于 MySQL 而言,最方便的方法可能就是用 phpMyAdmin 的导出、导入功能了,但
- 什么是迭代器迭代是 python 中访问集合元素的一种非常强大的一种方式。迭代器是一个可以记住遍历位置的对象,因此不会像列表那样一次性全部生
- 淘宝的 NPM 镜像是一个完整的npmjs.org镜像。你可以用此代替官方版本(只读),同步频率目前为 15分钟 一次以保证尽量与官方服务同
- Numpy提供了几种数据保存的方法。以3*4数组a为例:1. a.tofile("filename.bin")这种方法只
- 文字比较难解释,直接看图应该就懂是要做什么了。需求工作中遇到的,需求就是超过四行得有个展开按钮,点击展开显示所有内容,不超过四行的话就不需要
- 环境搭建1.安装uwsgi、nginx和djangoapt install nginxpip install uwsgipip instal
- 一、Tesseract文字识别是ORC的一部分内容,ORC的意思是光学字符识别,通俗讲就是文字识别。Tesseract是一个用于文字识别的工
- 目录通过与 OpenCV 模板匹配的 OCR信用卡 OCR 结果总结今天的博文分为三个部分。 在第一部分中,我们将讨论 OCR-A 字体,这