python 包之 Pillow 图像处理教程分享
目录
一、安装二、打开图片三、转换格式并保存四、创建缩略图五、获取图片属性六、图片信息七、调色板八、画板九、图片模式十、模式转换十一、矩阵模式转换十二、图片尺寸十三、通道分离十四、复制、裁剪、粘贴、合并十五、几何变换十六、高级图片处理十七、滤波器处理十八、设置透明度合成两张图十九、设置模式合成两张图二十、草稿模式二十一、获取通道名称二十二、获取包围盒二十三、获取像素值二十四、获取图片极值二十五、指定位置像素值二十六、获取图像直方图二十七、内存分配二十八、查找指定的帧二十九、获取当前帧位置一、安装
被认为是python官方图像处理库PIL非常适合于图像归档以及图像的批处理任务。可以使用PIL创建缩略图,转换图像格式,打印图像等等PIL支持众多的GUI框架接口,可以用于图像展示PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换pip install Pillow
二、打开图片
from PIL import Image im = Image.open("picture.jpg") im.show()
三、转换格式并保存
from PIL import Image im = Image.open("picture.jpg") im.save("result.png")
四、创建缩略图
from PIL import Image im = Image.open("picture.jpg") im.thumbnail((128, 128)) im.save("result.jpg")
五、获取图片属性
获取图像的来源,如果图像不是从文件读取它的值就是None。from PIL import Image im = Image.open("picture.jpg") print(im.format)
六、图片信息
from PIL import Image im = Image.open("picture.jpg") print(im.info)
七、调色板
如果图像的模式是“P”,则返回Image Palette类的实例;否则,将为Nonefrom PIL import Image im = Image.open("picture.jpg") print(im.palette)
八、画板
使用给定的变量mode和size生成画板from PIL import Image im= Image.new("RGB", (128, 128), "#FF0000") im.show()
九、图片模式
图像的模式,常见如下L:8位像素,黑白P:9位像素,使用调色板映射到任何其他模式1:1位像素,黑白图像,存成8位像素RGB:3*8位像素,真彩RGBA:4*8位像素,真彩+透明通道CMYK:4*8位像素,印刷四色模式或彩色印刷模式YCbCr:3*8位像素,色彩视频格式I:32位整型像素F:33位浮点型像素from PIL import Image im = Image.open("picture.jpg") print(im.mode)
十、模式转换
将当前图像转换为其他模式,并且返回新的图像from PIL import Image im = Image.open("picture.jpg") new_im = im.convert("L") print(new_im.mode) new_im.show()
十一、矩阵模式转换
使用转换矩阵将一个“RGB”图像转换为“L”或者“RGB”图像from PIL import Image im = Image.open("picture.jpg") print(im.mode) matrix = (0.412453,0.357580, 0.180423, 0, 0.212671,0.715160, 0.072169, 0, 0.019334,0.119193, 0.950227, 0 ) new_im = im.convert("L", matrix) print(new_im.mode) new_im.show()
十二、图片尺寸
获取图像的尺寸,按照像素数计算,它的返回值为宽度和高度的二元组from PIL import Image im = Image.open("picture.jpg") print(im.size)
十三、通道分离
返回当前图像各个通道组成的一个元组分离一个 RGB 图像将产生三个新的图像分别对应原始图像的每个通道红、绿、蓝三张图片from PIL import Image im = Image.open("picture.jpg") r,g,b = im.split() print(r.mode) print(r.size) print(im.size)
十四、复制、裁剪、粘贴、合并
from PIL import Image im = Image.open("picture.jpg") # 复制 im.copy() # 裁剪 im.crop((100, 100, 400, 400)) # 将一张图粘贴到另一张图像上 im.paste(im.transpose(Image.ROTATE_180),im) # 合并类使用一些单通道图像,创建一个新的图像 Image.merge("RGB", im.split())
十五、几何变换
Image类有resize()、rotate()和transpose()、transform()方法进行几何变换from PIL import Image im = Image.open("picture.jpg") # 修改尺寸 im.resize((128, 128)) # 角度旋转 im.rotate(45) # 返回当前图像的翻转或者旋转的拷贝 # 值为:FLIP_LEFT_RIGHT,FLIP_TOP_BOTTOM,ROTATE_90,ROTATE_180,ROTATE_270 im.transpose(Image.ROTATE_90) # 用给定的尺寸生成一张新的图像,与原图有相同的模式 im.transform((200, 200), Image.EXTENT, (0, 0, 300, 300))
十六、高级图片处理
使用ImageEnhance
对象就能快速地进行设置。 可以调整对比度、亮度、色平衡和锐利度
from PIL import Image from PIL import ImageEnhance im = Image.open("picture.jpg") enh = ImageEnhance.Contrast(im) enh.enhance(1.3).show("30% more contrast")
十七、滤波器处理
from PIL import Image from PIL import ImageFilter im = Image.open("picture.jpg") # 均值滤波 im1 = im.filter(ImageFilter.BLUR) # 找轮廓 im2 = im.filter(ImageFilter.CONTOUR) # 边缘检测 im3 = im.filter(ImageFilter.FIND_EDGES) im.show() im1.show() im2.show() im3.show()
十八、设置透明度合成两张图
使用给定的两张图像及透明度变量alpha,生成一张新的图像变量alpha值在0和1之间若变量alpha为0.0,返回第一张图像的拷贝。若变量alpha为1.0,将返回第二张图像的拷贝。from PIL import Image im1 = Image.open("picture1.jpg") im2 = Image.open("picture2.jpg") im = Image.blend(im1, im2, 0.30) im.show()
十九、设置模式合成两张图
使用给定的两张图像及mask图像作为透明度,生成一张新的图像图像的模式可以为“1”,“L”或者“RGBA”所有图像必须有相同的尺寸from PIL import Image im1 = Image.open("picture1.jpg") im2 = Image.open("picture2.jpg") im = Image.composite(im1, im2, "L") im.show()
二十、草稿模式
速度要求比质量高的场合允许在不读取文件内容的情况下尽可能(可能不会完全等于给定的参数)地将图片转成给定模式和大小,这在生成缩略图的时候非常有效from PIL import Image im = Image.open("picture.jpg") print(im.size,im.mode) new_im = im.draft("L", (200,200)) print(new_im.size,new_im.mode) new_im.show()
二十一、获取通道名称
返回包括每个通道名称的元组例如,对于RGB图像将返回(“R”,“G”,“B”)from PIL import Image im = Image.open("picture.jpg") print(im.getbands())
二十二、获取包围盒
计算图像非零区域的包围盒这个包围盒是一个4元组,定义了左、上、右和下像素坐标如果图像是空的,这个方法将返回空from PIL import Image im = Image.open("picture.jpg") print(im.getbbox())
二十三、获取像素值
from PIL import Image im = Image.open("picture.jpg") print(im.getdata())
二十四、获取图片极值
返回一个2元组包括该图像中的最小和最大值from PIL import Image im = Image.open("picture.jpg") print(im.getextrema())
二十五、指定位置像素值
from PIL import Image im = Image.open("picture.jpg") print(im.getpixel((10,0)))
二十六、获取图像直方图
from PIL import Image im = Image.open("picture.jpg") im_histogram = im.histogram() print(im_histogram[0])
二十七、内存分配
为图像分配内存并从文件中加载它返回一个用于读取和修改像素的像素访问对象from PIL import Image im = Image.open("picture.jpg") pix = im.load() print(pix[0,2])
二十八、查找指定的帧
给定的动态图中查找指定的帧如果查找超越了序列的末尾,则产生一个EOFError异常当文件被打开时,PIL库自动指定到第0帧上from PIL import Image im_gif = Image.open("loading.gif") print(im_gif.mode) # 默认打开时是第0帧 im_gif.show() im_gif.seek(1) im_gif.show() im_gif.seek(3) im_gif.show()
二十九、获取当前帧位置
from PIL import Image im_gif = Image.open("loading.gif") print(im_gif.tell()) im_gif.seek(3) print(im_gif.tell())
到此这篇关于python 包之 Pillow 图像处理教程分享的文章就介绍到这了,更多相关python Pillow 图像处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?