之前一直是用opencv对图片进行读取、显示等操作,后来发现Python自带的库PIL也可以完成相同的操作,至于两者的区别,后边再研究,本文总结PIL常用的方法函数。在使用之前,要先导入库

from PIL import Image

1 打开图片

img=Image.open("kobe.jpg")

注:有些图片名称是包含中文的,就需要在“”前加上u,例:img=Image.open(u"阿布.jpg")

2 显示图片

img.show()

3 输出图片信息

print img.mode,img.size,img.format

结果为 RGB (508, 493) JPEG

4 保存图片

img.save("img1.png","png")

说明:img为一个图片,存为一个名叫img1的图片,格式为png。后面的png不写也可以,直接按照文件名的后缀.png存为相应格式了。

5 改变图片尺寸

smallimg=img.resize((128,128),Image.ANTIALIAS)

说明:(128,128)为更改后的尺寸,Image.ANTIALIAS有消除锯齿的效果。

6 图片类型转化

img=img.convert("RGBA")

说明:将img图片的mode转换为"RGBA"格式

7 分割通道

bands=img.split()
rIm=bands[0]
gIm=bands[1]
bIm=bands[2]
aIm=bands[3]

说明:将img代表的图片分割通道。

如果是RGBA,分割后就有四个通道。bands[0]、bands[1]、bands[2]、bands[3]分别代表了R(red)、G(green)、B(blue)、A(alpha)四个通道。

8 合并通道

img=img.convert("RGBA")
bands=img.split()
rIm=bands[0]
gIm=bands[1]
bIm=bands[2]
aIm=bands[3]
remadeImage=Image.merge("RGBA",(rIm,gIm,bIm,aIm))
remadeImage.save("remadeImage.png","png")

说明:使用Image.merge("RGBA",(rIm,gIm,bIm,aIm))将通道合成为一个图片,"RGBA"格式的图片通道分为R(red)、G(green)、B(blue)、A(alpha)。rIm,gIm,bIm,aIm分别为自定义的R、G、B、A。

9 粘贴图片

import Image
img=Image.open(u"阿布.jpg")
img1=Image.open("code.jpg")
img.paste(img1,(0,10))img.save("img2.png")

说明:img.paster(img1,(0,10)是将图片img1粘贴到图片img上。(0,10)是粘贴的坐标位置。

10 拷贝图片

img=Image.open(u"阿布.jpg")
bounds=(0,0,493,254)
cutoutIm=img.crop(bounds)
cutoutIm.save("cotoutIm.png","png")

说明:bounds为自定义的拷贝区域(x1,y1,x2,y2),x1和y1决定了拷贝区域左上角的位置,x2和y2决定了拷贝区域右下角的位置。

img.crop(bounds):拷贝图片img坐标区域在bounds之间的图片。

11 旋转图片

fixedIm=img.rotate(90)
fixedIm.save("fixedIm.png","png")

说明:fixedIm=img.rotate(90),将图片img逆时针旋转90度,存到fixedIm中。

12 对像素进行操作

img=Image.open("smallimg.png")
img.getpixel((4,4))
img.putpixel((4,4),(255,0,0))
img.save("img1.png","png")

说明:getpixel得到图片img的坐标为(4,4)的像素点。putpixel将坐标为(4,4)的像素点变为(255,0,0)颜色,即红色。

13 使用ImageDraw库进行画图

import ImageDrawimg=Image.open(u'阿布.jpg')
a=ImageDraw.Draw(img)
a.line(((0,0),(508,493)),fill=(255,0,0))
a.line(((0,493),(508,0)),fill=(0,255,0,0))
a.arc((10,10,100,100),0,360,fill=255)
#因为PIL库编译时缺少东西,所以导致字体不能更改
#font = ImageFont.truetype ("Arial.ttf",16)
a.text((10,10),"hello",fill=(255,0,0),font=None)
img.save("img1.png")

说明:

  • 1.画图需要导入ImageDraw库。
  • 2.a=ImageDraw.Draw(img),对img图像进行画图操作
  • 3.a.line,画直线。((0,0),(508,493))为直线左右起点的坐标。fill=(255,0,0)为直线填充的颜色。
  • 4.a.arc,画弧线。(10,20,100,300)为弧线最左侧距离左边、弧线最上面距离上面、弧线最右面距离左面、弧线最下面距离左边的距离。fill=255为填充的颜色,也可以写成(255,0,0,0)的格式。
  • 5.a.text为添加文字,(10,10)为添加文字的位置,fill=(255,0,0)为填充文字的颜色,font为文字的字体,None为没有样式,font可以自定义。自定义方法为font = ImageFont.truetype ("Arial.ttf",16)

Python之PIL图片操作相关推荐

  1. Python学习02_图片操作

    转自:http://www.cnblogs.com/denny402/p/5121897.html skimage提供了io模块,顾名思义,这个模块是用来图片输入输出操作的.为了方便练习,也提供一个d ...

  2. python︱批量操作文件(os)、图片操作技巧(下载网络图片、skimage.io)

    文章目录 @[toc] . 一.遍历操作文件 1.文件名字获取 **注意,不能`import glob` ,不然就会报错:** 2.批量重命名文件os.rename 直接修改了上级目录,test2.t ...

  3. PDF转图片再转长图、python、pil

    PDF转图片再转长图.python.pil 直接贴代码 运行环境 直接贴代码 # -*- coding: utf-8 -*- """ 1.安装库pip install p ...

  4. 新发的日常小实验——使用python的PIL库批量修改图片尺寸,确保宽和高是4的倍数(Unity、PIL、Pillow、压缩)

    文章目录 一.问题:图片导入Unity被调整成2的N次方 二.设置不转换成2的N次方 三.使用ETC压缩格式,图片宽高必须是4的倍数 四.使用python的PIL库批量修改图片尺寸,确保宽和高是4的倍 ...

  5. 使用python中PIL库进行切图时候出现了图片全黑

    使用PIL的Image切图时候图片全黑 不知道大家有没有遇见这样得问题,使用python中PIL库进行切图时候出现了图片全黑得现象 今天写了个切图得代码,但是得到得图片是全黑的,像这样的情况: 不知道 ...

  6. 【Python | opencv+PIL】常见操作(创建、添加帧、绘图、读取等)的效率对比及其优化

    一.背景 本人准备用python做图像和视频编辑的操作,却发现opencv和PIL的效率并不是很理想,并且同样的需求有多种不同的写法并有着不同的效率.见全网并无较完整的效率对比文档,遂决定自己丰衣足食 ...

  7. 通过Python的PIL库给图片添加图片水印

    文章目录 前言 一.素材准备 1.原图 2.水印图 二.使用PIL库给图片添加图片水印 1.引入库 2.定义图片路径 3.打开原图 4.打开水印图片 5.计算水印图片大小 6.计算原图大小 7.调整水 ...

  8. python验证码,python将PIL生成的图片进行base64编码并返回给前端浏览器

    我用python的PIL生成了验证码图片,需要将图片返回给前端浏览器,有两种返回方式.一种是返回response,另一种是将图片进行base64编码后返回. 注意:PIL生成验证码图片时,需要传入fo ...

  9. Python使用PIL将png图片转化为jpg图片

    Python使用PIL将png图片转化为jpg图片 pip install Pillow #PIL将png图片转化为jpg图片语法 from PIL import Imageim1 = Image.o ...

最新文章

  1. 远场语音识别错误率降低30%,百度提基于复数CNN网络的新技术
  2. 谨记!怎么样的编程会让你进监狱?
  3. C++ 加载Live2D官方Cubism SDK for Native
  4. java配置文件扫描包_SpringMVC和Spring的配置文件扫描包详解
  5. 生成arff文件,csv转为arff
  6. 6-23 分离链接法的删除操作函数 (20 分)
  7. 剑指 Offer 43. 1~n 整数中 1 出现的次数(数位dp)
  8. android照片编辑软件,照片编辑免费软件下载-照片编辑软件app下载 v7.45最新版_5577安卓网...
  9. 计算机网络自查分析报告,网络安全自查报告
  10. Smartbi:用Excel制作移动端的九型人格测试
  11. c语言校招笔试试题,腾讯2014校园招聘C语言笔试题
  12. 【实用性程序】弧微分计算圆周长
  13. 读《创业36条军规》(五)放下身段死缠烂打
  14. wordpress主题开发教程
  15. Python爬虫实战,拉黑 QQ 空间屏蔽我的“大人物“
  16. 康威生命游戏简易版python_turtle实现
  17. IT管理成功者的蜕变 看致命七宗罪
  18. html5 桌面提醒参数,[HTML5]Notification桌面提醒功能
  19. Hive场景模拟SQL编程实例 (销售业绩表)实验
  20. Python笔记——类定义

热门文章

  1. MacBook Pro(13 英寸,2011 年末)A1278 安装Winows11无声音问题解决(WIN10和WIN11同样的解决方法)
  2. 【Baidu Apollo】基于人工驾驶路径的实时地图生成
  3. 知云文献翻译打不开_最新版知云文献翻译 | 内附软件安装包
  4. 组合数学4-全排列生成算法
  5. QT_QML_仿微信界面(实战)
  6. 又一家云服务关停,这回是网易
  7. glibc 知:手册84:附录E:平台特定设施
  8. 微信H5手机网页开发—快速入门
  9. 游戏建模行业就国内发展的前景,以及行业变化是如何的?
  10. HTML+CSS一个简单的电影网页制作作业,学生个人html静态网页制作成品代码, html电影速递网