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多线程学习资料
Dec 19 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
Python常用库推荐
Dec 04 Python
python奇偶行分开存储实现代码
Mar 19 Python
对python pandas读取剪贴板内容的方法详解
Jan 24 Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 Python
Django Sitemap 站点地图的实现方法
Apr 29 Python
Java byte数组操纵方式代码实例解析
Jul 22 Python
Python加载数据的5种不同方式(收藏)
Nov 13 Python
python re的findall和finditer的区别详解
Nov 15 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 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 array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
PHP实现变色验证码实例
2014/01/06 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
php中错误处理操作实例分析
2019/08/23 PHP
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
JS判断是否手机或pad访问实现方法
2016/12/09 Javascript
清空元素html("") innerHTML="" 与 empty()的区别和应用(推荐)
2017/08/14 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
Python的Django框架使用入门指引
2015/04/15 Python
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
python查看列的唯一值方法
2018/07/17 Python
对python实现合并两个排序链表的方法详解
2019/01/23 Python
Python3几个常见问题的处理方法
2019/02/26 Python
使用python画社交网络图实例代码
2019/07/10 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
Python MySQL 日期时间格式化作为参数的操作
2020/03/02 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
Django 如何实现文件上传下载
2021/04/08 Python
redis cluster支持pipeline的实现思路
2021/06/23 Redis
Golang 遍历二叉树
2022/04/19 Golang
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers