前言

在这一章节,讲了关于图像的三个方面的内容:

  1. 获得图像的相关信息:例如 RGBA 值,尺寸...
  2. 对图像进行编辑操作:例如 旋转,缩放...
  3. 在图像上绘制形状:例如 矩形,圆形...

[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 对象。

转载于:https://www.cnblogs.com/FBsharl/p/10311144.html

Python 编程快速上手 第十七章 操作图像相关推荐

  1. python编程快速上手第三章_Python编程快速上手 往让繁琐工作自动化-6.6 习题(示例代码)...

    Python编程快速上手 往让繁琐工作自动化-6.6 习题 1.什么是转义字符? 答:转义字符表示字符串中的一些字符,这些字符用别的方式很难在代码中打印出来. 2.转义字符\n和\t代表什么? 答:\ ...

  2. python编程快速上手第四章_《Python编程快速上手——让繁琐的工作自动化》读书笔记 第四章 列表...

    接下来我们来学习 python 中的列表(有点像 Java 中的数组,但并不是数组) "列表"是一个值,它包括多个字构成的序列,术语"列表值"指的是列表本身(它 ...

  3. 《Python编程快速上手——让繁琐工作自动化》——第一部分 Python编程基础 第1章 Python基础 1.1 在交互式环境中输入表达式...

    本节书摘来自异步社区<Python编程快速上手--让繁琐工作自动化>一书中的第1章,第1.1节,作者[美] Al Sweigart,王海鹏 译,更多章节内容可以访问云栖社区"异步 ...

  4. Python程序员的圣经——《Python编程快速上手:让繁琐工作自动化》尾末附下载地址

    一.前言 如今,人们面临的大多数任务都可以通过编写计算机软件来完成.Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.通过Python编程,我们能够解决现实生活中的很多任务. 今天给 ...

  5. Python编程快速上手,让繁琐工作自动化(附下载)

    今天给大家分享一份Python程序员的圣经--<Python编程快速上手:让繁琐工作自动化>.这是本面向实践的Python编程实用指南. 目录 第一章 Python基础 第二章 控制流 第 ...

  6. python快速上手 让繁琐工作自动化 英文版_入门python:《Python编程快速上手让繁琐工作自动化》中英文PDF+代码...

    入门推荐学习<python编程快速上手>前6章是python的基础知识,通俗易懂地讲解基础,初学者容易犯错的地方,都会指出来.从第三章开始,每章都有一个实践项目,用来巩固前面所学的知识. ...

  7. 《Python编程快速上手 让繁琐工作自动化》pdf

    <div id="article_content" class="article_content tracking-ad" data-mod=" ...

  8. 《Python编程快速上手——让繁琐工作自动化》第2版的中文版上市了

    第2版基于Python3.X重磅升级,更新内容超30%,不仅更新了众多项目案例,还加强了立体化学习体验,增加了随书视频.在线编程练习环境和社群互助学习体验. 这本书成功破圈编程界,为零基础.从未接触过 ...

  9. 一周新书榜:西瓜书伴侣、Python编程快速上手第2版上榜

    3月份的程序员专业书很多,好书也多,上榜书更多,真是万物复苏,好书排排站,刚给大家推荐完Linux新书,又迎来周志华教授"西瓜书"<机器学习>公式完全解析指南的< ...

最新文章

  1. python实现加密字符串_Python实现对字符串的加密解密方法示例
  2. Linux内存buffer和cache的区别
  3. android检测内存使用工具--procrank
  4. 【go网络编程】-RPC编程
  5. 安卓手机chroot linux,在Android设备上安装 GNU/Linux Chroot 环境
  6. 查看线上环境中的jvm参数
  7. git/github使用完整教程(1)基础
  8. 一、PHP基础——表单传值、上传文件
  9. Python2和Python3中@abstractmethod的用法
  10. ubuntu python3.7修改默认pip版本_Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
  11. Java代码中换行符怎么用
  12. 基于M6097 switch的STP协议调试方法
  13. 工作那些事(四)大公司VS小公司
  14. 【2017-7-17】动软代码生成器 数据库连接 配置失败 解决方法
  15. multisim安装完成后显示安装程序损坏的免费解决方案
  16. Android pad适配札记
  17. k3s 快速入门 - traefix 使用 - 1
  18. 柱状图怎么设置xy轴_excel表格xy轴数据-怎么做用excel设置xy轴
  19. 助推外贸高质量发展,玉湖冷链模式引发服贸行业高度关注
  20. 2022-04-24_数组的定义和初始化

热门文章

  1. C++中函数的重载和函数指针排序大全
  2. 使用HttpSessionBindingListener方法
  3. stm32串口学习(一)
  4. 【那么普通却那么自信,一分钟学Source Insight】Source Insight 4 tab设置为4个空格
  5. 详解语义分割评价指标
  6. DM368开发 --IPNC 设置过程
  7. hdu6375(2018 “百度之星”程序设计大赛 - 初赛(A))
  8. Dalvik解释器源码到VMP分析
  9. 【译】Introduction to Smart Contract and DApp Security
  10. Let’s Build the Tiniest Blockchain In Less Than 50 Lines of Python (Part I)