Python P图
Python PIL
PIL (Python Image Library) 库是Python 语言的一个第三方库,PIL库支持图像存储、显示和处理,能够处理几乎所有格式的图片。
一、PIL库简介
1. PIL库主要有2个方面的功能:
(1) 图像归档:对图像进行批处理、生产图像预览、图像格式转换等。
(2) 图像处理:图像基本处理、像素处理、颜色处理等。
2. PIL拥有多个类,此处就其中的Image类、ImageFilter类、ImageEnhance类做简单介绍。
二、安装库函数
pip install pillow
注:由于本机已经安装了PIL库(安装时使用pillow),所以以更新为例,使用 -U 标签可实现更新。


三、使用库函数Image类 —— 基本图像处理
1. 调用Image类
from PIL import Image
2. Image类关于图像读取与创建
|
方法 |
说明 |
|
Image.open(filename) |
加载图像文件 |
|
Image.new(mode,size,color) |
根据给定参数创建新图像 |
|
Image.open(StringIO.StringIO(buffer)) |
从字符串中获取图像 |
|
Image.frombytes(mode,size,color) |
根据像素点创建新图像 |
|
Image.verify() |
对图像完整性进行检查,返回异常 |

3. Image类的常用属性
|
方法 |
说明 |
|
Image.format |
图像格式或来源,若图像不是从文件读取,返回None |
|
Image.mode |
图像的色彩模式,’L’为灰度模式,’RGB’为真彩色图像,’C(青)M(品红)Y(黄)K(黑)’为出版图像 |
|
Image.size |
图像的宽度和高度,单位是像素(px),返回值为元组类型 |
|
Image.palette |
调色板属性,返回ImagePalette类型 |

4.Image类的序列图像操作方法
|
方法 |
说明 |
|
Image.seek(frame) |
跳转并返回图像中的指定帧 |
|
Image.tell() |
返回当前帧的序号 |

5.Image类的图像旋转和缩放方法
|
方法 |
说明 |
|
Image.resize(size) |
返回按size大小调整图像的副本 |
|
Image.rotate(angle) |
返回按angle角度旋转图像的副本 |

6.Image类的图像转换和保存方法
|
方法 |
说明 |
|
Image.save(filename,format) |
将图像保存为filename文件名,format格式 |
|
Image.convert(mode) |
将图像转换为mode模式 |
|
Image.thumbnail(size) |
创建图像的缩略图,size是缩略图尺寸的元组 |
Example_1:

# -*- encoding:utf-8 -*-
''' 改变颜色 --- 颜色反转'''
from PIL import Image
nest = Image.open("D:\\nest.jpg")
r,g,b = nest.split() #获取原图的RGB通道的颜色值
newb = b.point(lambda i:i*1.1) #将B通道的颜色值增强
nest1 = Image.merge(nest.mode,(b,g,r))
nest1.thumbnail((400,254)) #创建缩略图
nest1.save("D:\\nest_2.jpg")

原图与效果图对比:

7.Image类的图像像素和通道处理方法
|
方法 |
说明 |
|
Image.point(func) |
根据函数func的功能对每个元素进行运算,返回图像副本 |
|
Image.split() |
根据GRB图像的每个颜色通道,返回图像副本 |
|
Image.merge(mode,bands) |
合成通道,其中mode为色彩,bands为新的色彩通道 |
|
Image.blend(im1,im2,alpha) |
将2张图片im1和im2按照公式插值后生成新图像 公式:im1*(1.0 - alpha) + im2*alpha |
四、使用库函数ImageFilter类 —— 图像过滤
1.调用ImageFilter类
from PIL import ImageFilter
2. ImageFilter类预定义图像过滤方法
|
方法 |
说明 |
|
ImageFilter.BLUR |
图像的模糊效果 |
|
ImageFilter.CONTOUR |
图像的轮廓效果 |
|
ImageFilter.DETAIL |
图像的细节效果 |
|
ImageFilter.EDGE_ENHANCE |
图像的边界加强效果 |
|
ImageFilter.EDGE_ENHANCE_MORE |
图像的阈值边界加强效果 |
|
ImageFilter.EMBOSS |
图像的浮雕效果 |
|
ImageFilter.FIND_EDGES |
图像的边界效果 |
|
ImageFilter.SMOOTH |
图像的平滑效果 |
|
ImageFilter.SMOOTH_MORE |
图像的阈值平滑效果 |
|
ImageFilter.SHARPEN |
图像的锐化效果 |
Example_2:

# -*- encoding:utf-8 -*-
''' 轮廓效果 --- 素描 '''
from PIL import Image
from PIL import ImageFilter
square = Image.open("D:\\square.jpg")
square1 = square.filter(ImageFilter.CONTOUR) #选择轮廓效果
square1.save("D:\\square0.jpg")

原图:

效果图:

五、使用库函数ImageEnhance类 —— 图像增强
1. 调用ImageEnhance类
from PIL import ImageEnhance
2.ImageEnhance类图像增强与滤镜方法
|
方法 |
说明 |
|
ImageEnhance.enhance(factor) |
对所选属性的数值增强factor倍 |
|
ImageEnhance.Color(im) |
调整图像的颜色平衡 |
|
ImageEnhance.Contrast(im) |
调整图像的对比度 |
|
ImageEnhance.Brightness(im) |
调整图像的亮度 |
|
ImageEnhance.Sharpness(im) |
调整图像的锐度 |
Example_3:

# -*- encoding:utf-8 -*-
''' 亮度增强 --- 曝光 '''
from PIL import Image
from PIL import ImageEnhance
gz = Image.open("D:\\gz.jpg")
gz1 = ImageEnhance.Brightness(gz) #选择亮度
gz1.enhance(2).save("D:\\gz1.jpg") #将亮度增强2倍后保存

原图对比效果图:

Python P图的更多相关文章
- python 实现图的深度优先和广度优先搜索
在介绍 python 实现图的深度优先和广度优先搜索前,我们先来了解下什么是"图". 1 一些定义 顶点 顶点(也称为"节点")是图的基本部分.它可以有一个名称 ...
- python解决图的最短路径问题
在hihoCoder上遇到一个算法题目,描述如下: 对图结构有了解的不难发现,这是经典的求图的最短路径问题.以下是python代码: def findMin(row): minL = max(row) ...
- python GUI图形化编程-----wxpython
一.python gui(图形化)模块介绍: Tkinter :是python最简单的图形化模块,总共只有14种组建 Pyqt :是python最复杂也是使用最广泛的图形化 Wx ...
- python数据图形化—— matplotlib 基础应用
matplotlib是python中常用的数据图形化工具,用法跟matlab有点相似.调用简单,功能强大.在Windows下可以通过命令行 pip install matplotlib 来进行安装. ...
- python做图笔记
1. 工具选择 了解了基本python,rodeo,anaconda套件这三种工具. (1)基本python,下载安装python的最新版(目前是python3.7).注意要使用安装版.安装好后,一般 ...
- python绘制图的度分布柱状图, draw graph degree histogram with Python
图的度数分布 import collections import matplotlib.pyplot as plt import networkx as nx G = nx.gnp_random_gr ...
- python妹子图爬虫5千张高清大图突破防盗链福利5千张福利高清大图
meizitu-spider python通用爬虫-绕过防盗链爬取妹子图 这是一只小巧方便,强大的爬虫,由python编写 所需的库有 requests BeautifulSoup os lxml 伪 ...
- 软件测试人必备的 Python 知识图
之前发过蛮多不少关于 Python 学习的文章,收到大家不少的好评,不过大家也有许多困惑: 现在测试不好做,是不是真的该重新去学一门热门的语言? 入门 Python 该学哪些知识点?该看哪些书? 可以 ...
- Python切图脚本
背景: 时值疫情,作业需要在网上提交.最近老师改变了交作业方式,之前是提交完整的作业图片即可,现在需要将完整的作业图片切分成一题一题的提交,如果手动切分较麻烦,故本人写了个python脚本实现自动切分 ...
- 学会这些Python美图技巧,就等着女朋友夸你吧
一.前言 Python中有许多用于图像处理的库,像是Pillow,或者是OpenCV.而很多时候感觉学完了这些图像处理模块没有什么用,其实只是你不知道怎么用罢了.今天就给大家带了一些美图技巧,让你的图 ...
随机推荐
- ametuer technology
1. eclipse build output/ .s37 not big enough (about 1.23M) Brose Setting: Build command must be BUIL ...
- Py 最全的常用正则表达式大全 ZZ
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求.所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下.给自己留个底,也给朋友们做个参考. ...
- 网易cetus数据库中间件安装-读写分离版本
安装前提:1.数据库主从关系要做好:2.授权用户登录要做好:3.mysql最大连接数设置好,不然会报连接错误:4.版本最好是5.6以上. 1.安装依赖 yum install cmake gcc gl ...
- SP913 QTREE2 - Query on a tree II
思路 第一个可以倍增,第二个讨论在a到lca的路径上还是lca到b的路径上, 倍增即可 代码 #include <cstdio> #include <algorithm> #i ...
- 【Git】Git使用记录: remove *.lock eg: index.lock/head.lock
问题 Another git process seems to be running in this repository, e.g. an editor opened by 'git commit' ...
- android 百度地图 定位获取位置失败 62错误
一切正常步骤进行但是还是没有获得定位,得到的坐标总是49E.xxxx,错误代码总是62 总是以为代码.或jar包.或还有什么权限没给.搞了好久,十分郁闷.在控制台上又没有什么具体的错误提示 经过无数次 ...
- 使用C#创建Windows服务 并发布Windows 服务
一.开发环境 操作系统:Windows 10 X64 开发环境:VS2015 编程语言:C# .NET版本:.NET Framework 4.0 目标平台:X86 二.创建Windows Servic ...
- Antd Select组件结合使用出现must set key for <rc-animate> children问题
一.以下情况可能导致错误发生 出现这个问题的首要条件是因为Select的mode 设置成multiple or tags 1. Select的defaultValue使用了空字符串 例如: const ...
- UI组件--element-ui合计行在横向滚动条下面的解决方法
使用element-ui合计功能, 因列数较多, 产生横向滚动条: 但是合计行却在滚动条下面, 拖动滚动条合计行不会跟着横向滚动. 在当前页面添加以下样式: <style lang='less' ...
- [Linux]ubuntu安装基本流程
ubuntu安装基本流程 1.设置分辨率2.设置语言环境3.设置服务器镜像源4.添加终端5.apt.apt-get更新和升级系统软件 sudo apt update/upgrade sudo apt- ...