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通过邮件服务器端口发送邮件的方法
Apr 30 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
python-opencv 将连续图片写成视频格式的方法
Jan 08 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
python3实现单目标粒子群算法
Nov 14 Python
python装饰器相当于函数的调用方式
Dec 27 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
Feb 12 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
Python自定义sorted排序实现方法详解
Sep 18 Python
Python尾递归优化实现代码及原理详解
Oct 09 Python
Python根据字符串调用函数过程解析
Nov 05 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中GET变量的使用
2006/10/09 PHP
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
php生成静态文件的多种方法分享
2012/07/17 PHP
将php数组输出html表格的方法
2014/02/24 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
JS的replace方法介绍
2012/10/20 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
[48:54]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第二场 6.3
2018/06/04 DOTA
python使用calendar输出指定年份全年日历的方法
2015/04/04 Python
python实现红包裂变算法
2016/02/16 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
python回调函数中使用多线程的方法
2017/12/25 Python
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
python excel转换csv代码实例
2019/08/26 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
苹果Mac升级:MacSales.com
2017/11/20 全球购物
医务人员自我评价
2014/01/26 职场文书
幼儿园运动会口号
2014/06/07 职场文书
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android