Python图像处理库PIL的ImageGrab模块介绍详解


Posted in Python onFebruary 26, 2020

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如下:

Python图像处理库PIL的ImageGrab模块介绍详解                             

图像im0如下:

Python图像处理库PIL的ImageGrab模块介绍详解

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图像处理库PIL的ImageGrab模块介绍详解

二、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()

到此这篇关于Python图像处理库PIL的ImageGrab模块介绍详解的文章就介绍到这了,更多相关PIL ImageGrab模块内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python PyTorch预训练示例
Feb 11 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
Pandas DataFrame 取一行数据会得到Series的方法
Nov 10 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
Dec 12 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
python3在同一行内输入n个数并用列表保存的例子
Jul 20 Python
python有序查找算法 二分法实例解析
Feb 18 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
python logging 重复写日志问题解决办法详解
Aug 04 Python
python matplotlib绘制三维图的示例
Sep 24 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
Oct 15 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 Python
Python图像处理库PIL的ImageDraw模块介绍详解
Feb 26 #Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 #Python
Pandas —— resample()重采样和asfreq()频度转换方式
Feb 26 #Python
python实现银行实战系统
Feb 26 #Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 #Python
python序列类型种类详解
Feb 26 #Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
Feb 26 #Python
You might like
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
复习Python中的字符串知识点
2015/04/14 Python
python脚本内运行linux命令的方法
2015/07/02 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
什么是命名空间(NameSpace)
2015/11/24 面试题
如何在C# winform中异步调用web services
2015/09/21 面试题
教育技术学专业职业规划书
2014/03/03 职场文书
初中优秀教师事迹材料
2014/08/18 职场文书
2014年度安全工作总结
2014/12/04 职场文书
简历自荐信范文
2015/03/09 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
手机销售员岗位职责
2015/04/11 职场文书
行政经理岗位职责
2015/04/15 职场文书
企业战略合作意向书
2015/05/08 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android