Python 编程快速上手 第十七章 操作图像
前言
在这一章节,讲了关于图像的三个方面的内容:
- 获得图像的相关信息:例如 RGBA 值,尺寸...
- 对图像进行编辑操作:例如 旋转,缩放...
- 在图像上绘制形状:例如 矩形,圆形...
[ImageColor 模块 & Image 模块]获得图像的相关信息
图像知识基础
谈谈 ImageColor 模块
格式:from PIL import ImageColor
getcolor() 方法和 RGBA 元组:
格式:ImageColor('Black', 'RGBA')
功能:第一个参数为一个颜色名称字符串,第二个参数为颜色的模式,返回一个 RGBA 值的元组。
谈谈 Image 模块和 Box 元组
格式:from PIL import Image
Box 元组: 为一个图像的尺寸值,通过 Image 模块得到一个 Image 对象之后,利用这个对象的 size() 方法可以得到一个 Box 元组。
[Image 模块]操作 & 编辑图像
操作图像的基础:打开,保存,新建
打开图像
格式:im = Image.open('nameOfImg.png')
功能:获得一个 Image 对象
谈谈 Image 对象的一些方法
- im.filename:获得图像的名称
- im.format:获得图像的格式
- im.format_description: 获得描述更精准的图像的格式
保存图像:
格式:im.save('nameOfImag')
功能:保存当工作目录目前的图像
新建图像:
格式:Image.new('RGBA', (100, 200), 'purple')
功能:第一个参数为颜色的模式,第二个参数为大小,第三个参数为背景的颜色,是可选值,默认为透明。
编辑图像:裁剪,复制和黏贴,缩放
裁剪图像:
格式:im.crop((335, 345, 565, 560))
功能:接收一个矩形元组(左,顶,右,底的顺序)返回一个新的已经裁剪了的图像。
复制图像和黏贴图像到其他图像:
复制图像:
格式: im.copy()
功能:返回一个 Image 对象
黏贴图像到其他图像:
格式:im.paste(anoterIm, (400, 500))
功能:接受的第一个参数为一个 Image 对象,另一个参数为黏贴图像的时候源 Image 对象的左上角在主 Image 对象的位置。
缩放图像:
格式:im.resize((int(width/2), int(height/2)))
功能:接收一个 Box 元组, Box 元组的元素的值都为整数,然后返回一个缩放后的 Image 对象。
旋转,翻转图像
旋转图像:
格式:im.rotate(90, expand = True)
功能:接受一个角度作为参数,将这个图像逆时针旋转这个角度后,返回一个新的 Image 对象。第二个参数决定是否对尺寸进行放大,来适应旋转后整个图像的全部像素,是一个可选值。
翻转图像
格式:im.transpose(Image.FILP_RIGHT)
功能:接收 Image.FILP(RIGHT/BOTTOM), 进行翻转图像。
操作像素
获得像素值
格式:im.getpixel()
功能:接受一个坐标元组,返回一个 三整数 RGB 元组或四整数 RGBA 元组。
更改像素值
格式:im.putpixel((x,y),(210, 210, 210))
功能:接受一个坐标元组和一个三整数 RGB 元组或四整数 RGBA 元组作为两个参数,设置图像这一点像素的颜色。
[ImageDraw 模块 & ImageFont 模块]在图像上绘制形状
导入模块:
from PIL import Image, ImageDraw, ImageFont
绘制形状的步骤:
1. 获得 ImageDraw 对象
格式: draw = ImageDraw.Draw()
功能: 使用 Draw() 方法得到一个 ImageDraw 对象。
2. 进行绘制
- 点:point(xy, fill): 其中 xy 为点的元组列表, fill 为 RGBA 元组或者颜色名称的字符串
- 线: line(xy, fill, width): 其中 xy 除了点点元组列表,还可以用整数列表,width 默认值为1,是可选值。
- 矩形: rectangle(xy , fill, outline): xy 为矩形元组,outline 为 RGBA 元组,是一个可选值。
- 椭圆: ellipse(xy, fill, outline): 和矩形一样
- 多边形: polygon(xy ,fill, outline): xy 和 line 中的一样。
绘制文本的步骤:
1. 获得 ImageFont 对象
格式:arialFont = ImageFont.truetype(os.path.join('/Library/Fonts','arial.ttf'),32)
功能:从系统的字体目录中获取字体文件,返回一个 ImageFont 对象。
2. 进行绘制
格式:ImageDraw(xy, text, fill, font)
功能:接受四个参数。需要注意: xy,是一个包含两个整数的元组,决定文字的左上角。text 为字符串格式。 font 为ImageFont 对象。
Python 编程快速上手 第十七章 操作图像的更多相关文章
- Python 编程快速上手 第六章总结
第六章 字符串操作 前言 这一章节讲了关于 Python 中字符串类型的知识.与字符串有关的操作符,方法等等. 处理字符串:字符串的写入.打印.访问的知识 原始字符串 格式:r'string'作用:在 ...
- Python 编程快速上手 第十一章 Web scrapping
前言 这一章讲了如何在 Web 上抓取相关的信息,工具是三个模块: webbrowser 模块:用于打开浏览器指定页面 requests 模块:用于下载文件 Beautiful Soup 模块:用于解 ...
- Python 编程快速上手 第五章总结
第五章 字典和结构化数据 创建数组 格式:myCat = {'size':'fat','color':'gray',disposition':'loud'} 对字典的操作 通过[ ] 访问字典的值 [ ...
- python编程快速上手第7章习题20
20.如何写一个正则表达式,匹配每 3 位就有一个逗号的数字?它必须匹配以下数字:'42''1,234''6,368,745'但不会匹配: '12,34,567' (逗号之间只有两位数字) '1234 ...
- Python 编程快速上手 第七章总结
前言 在 Word 软件中,我们总是习惯使用 CMD+F 用来查找和替换文本,但是,正如作者所说: 虽然计算机可以很快地查找文本,但你必须精确地告诉它要找什么. 我们往往想要查找一类文本,比如一段文本 ...
- Python编程快速上手-让繁琐工作自动化-第二章习题及其答案
Python编程快速上手-让繁琐工作自动化-第二章习题及其答案 1.布尔数据类型的两个值是什么?如何拼写? 答:True和False,使用大写的T和大写的F,其他字母是小写. 2.3个布尔操作符是什么 ...
- 入门python:《Python编程快速上手让繁琐工作自动化》中英文PDF+代码
入门推荐学习<python编程快速上手>前6章是python的基础知识,通俗易懂地讲解基础,初学者容易犯错的地方,都会指出来.从第三章开始,每章都有一个实践项目,用来巩固前面所学的知识. ...
- 《Python编程快速上手 —让繁琐工作自动化》|百度网盘免费下载|Python自动化办公
Python编程快速上手—让繁琐工作自动化 提取码:u8vj 如今,人们面临的大多数任务都可以通过编写计算机软件来完成. Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言.通过 P ...
- Python编程快速上手 让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘
Python编程快速上手 让繁琐工作自动化 - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:7qm4 有关本书 累计销售超过10万册 零基础编程者的不二之选 基于Python3编写 通用 ...
随机推荐
- 一图解释PHPstorm代码片段设置---附官方文档(转)
参考:https://blog.csdn.net/thinkthewill/article/details/81145106 资料 设置片段[官方设置教程] 设置变量对话框[官方设置教程] phpst ...
- BSGS算法学习笔记
从这里开始 离散对数和BSGS算法 扩展BSGS算法 离散对数和BSGS算法 设$x$是最小的非负整数使得$a^{x}\equiv b\ \ \ \pmod{m}$,则$x$是$b$以$a$为底的离散 ...
- NOIP 2017 游(划水)记
Day 0 上午,大概做了一套(大)信(水)心题. 让我想想我题目都是些什么鬼.. T1:大水题.什么sort一下就过了.据说lemon上用map不会被卡常(lemon上评测,程序跑得蜜汁快). T2 ...
- 经典算法分析:n与lgn
顺序查找O(n) 二分查找O(lgn) 通过代码来感受性能差别 package recursion; /** * @author zsh * @company wlgzs * @create 2019 ...
- 【python--函数解读】
1.strip()函数:用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列(包括'\n', '\r', '\t', ' ') 注意: 该方法只能删除开头或是结尾的字符,不能删除中间部分的 ...
- rsync: read error: Connection reset by peer (104)
Centos7 rsync守护进程上传文件失败 [root@nfs ~]# rsync -avz /etc rsync_backup@172.16.1.41::backupsending inc ...
- linux内核中的PTP clock是什么?
答: Precise Time Protocol(PTP),这是一种高精度时间同步协议,PTP是在硬件级实现的,因此需要硬件支持才能实现高精度时间同步
- Docker与.Net项目类型
使用Docker的项目,要求:基础类库与平台无关=>.netCore项目..netStandard项目 公共项目:.netCore项目 入口项目:.netStandard项目 例如:webapi ...
- 【转载】谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解
转载自:https://blog.csdn.net/tantexian/article/details/48196453 SOA: 维基百科解释:SOA:面向服务的软件架构(Service Orien ...
- 增强 用文本增强修改SAP标准屏幕中的字段名称 属于元素的文本增强
如果想要改变标准屏幕中的字段名称,如把物料主数据基本数据元素的名字改为我们想要的名字 . 1.首先,事务MM03进入物料主数据的基本数据2视图中,将鼠标光标放在需要更改的字段“页格式”上,然后按F1键 ...