python自学之《21天学通Python》(16)——第19章 用Pillow库处理图片
Pillow是Python2.X时代比较流行的Python ImagingLibrary(简称Pillow)图像处理库的分支,并修复了一些bug。Pillow提供了对Python3的支持,为Python3解释器提供了图像处理的功能。和Pillow库一样提供了广泛的文件格式支持、高效的内部表示以及相当强大的图像处理功能。这个图像处理库的核心被设计成为能够快速访问几种基本像素类型表示的图像数据。它为通用图像处理工具提供了一个坚实基础,通过使用Pillow模块,可以使用Python3对图片进行处理,例如,可用来对图片进行尺寸、格式、色彩、旋转等处理。
19.1 第三方Pillow库概述
由于Pillow不是Python自带的模块,因此需要用户自己安装。Pillow是跨平台的,在各种系统下都可以使用Pillow的强大功能。
19.1.1 安装第三方Pillow库
与安装Python的其他第三方库的方法相同,可以到以下网址下载库的压缩包。
https://pypi.python.org/pypi/Pillow/2.7.0
https://github.com/python-Pillow/Pillow
解压后,在命令提示符下进入其目录,运行以下命令:
python setup.py install
如果你的计算机可以联网的话,直接运行以下命令就自动可以从互联网上下载安装:
pip install pillow
19.1.2 Pillow库简介
在Pillow中,主要提供了以下对图片进行处理的模块。利用这些模块可以装载和保存多种格式文件,对图像进行缩放、裁剪、合成与变换,也可以像Photoshop一样专门处理通道,支持像素级操作、滤镜,支持对图像进行对比增强和统计分析,支持绘制文字和基本图形,甚至还支持动画。它包括的主要模块如表19.1所示。
19.1.3 Pillow库处理图像基础
Pillow库对图像的操作牵涉到图像处理的相关概念及表示,如下:
pixes(像素)——构成图片的点单元;
size(尺寸)——图片的大小,以两个元素的元组构成,形式为水平像素数,垂直像素数;
coordinates(坐标)——以左上角为(0,0)的坐标系统,形式为(x,y);
angles(角度)——以x轴正方向为起点,逆时针为正,反之为负,其单位为度(degree);
bboxes(边界框)——用来表示一个图像区域,形式为(x0,y0,xl,yl),是以左上角点坐标(x0,y0)为起点至右正下角bands(通道)——独立的颜色通道,它们具有相同的维数和深度。如在RGB模式下,每个图片由三个通道(RGB)叠加而成;(xl, yl)为终点,但不包含xl在列和yl所在行的区域;
mode(模式)——各种图片模式,如表19.2所示。
表19.2 Pillow支持图片模式及字符串表示
color(颜色)——可以为32位数值、元组或字符串。对于以上不同的图像格式,单通道图像像素值为1位、8位、32位等整数类型值;多通道图像则用像素元组来表示即(r,g,b)。此外,还可以使用以下风格的字符串型表示颜色:
CSS #FF0000或#F00;
RGB rgb(255,0,0或rgb(100%,0,0);
HSL hsl(120,30%,78%)。
filters——滤镜,多个像素映射到一个像素,以改变图像尺寸。目前主要有以下几种:
NEAREST 最近;BILINEAR 双线性;BICUBIC 双二次;ANTIALIAS 平滑。
fonts(字体)——可以支持bitmap、OpenType、TrueType等类型。
format(格式)——文件格式,默认以文件名的扩展名指定,也可以单独指定。如“PNG”、“JPG”等。
注意: 以上各种概念如图片模式等在图片处理中很重要,要熟练处理图片,必须了解这些基础知识。
19.1.4 Image模块中函数的使用
对于简单的图片处理,一般仅需使用Image模块,这个模块中包含的主要函数和使用方法如下:
open(file, mode)其参数含义如下:
file 要打开的图片文件;
mode 可选参数,打开文件的方式,一般使用默认值r即可。
Image模块中主要的函数是open函数,用于打开图片,操作结果是返回Image类的实例。当文件不存在时,会引发IOError错误。
new(mode, size, color=0)其参数含义如下;
mode 图片模式,如表19.2所示;
size 图片尺寸,宽、高构成的元组;
color 默认颜色(黑)。
blend(iml, im2, alpha)其参数含义如下:
iml 参与混合的图片1;
im2 参与混合的图片2;
alpha 混合透明度[0—1]。
实现的功能是将iml、im2两幅图片(尺寸相同)以一定的透明度混合,混合的方法是:
(im1 × (1 - alpha) + im2 × alpha)
当alpha为0时,得到iml原图片,为1时,得到im2原图片。
【实例19-1】 演示了用blend()函数混合图像的实例,代码如下:
【代码说明】代码仅有四行,但实现了两张图片以一定的透明度混合,并且混合后调用系统中的软件显示相应的图片。
【运行效果】将此两幅图片混合后得到如图19.1所示。
注意: 原始图片a.jpg、b.jpg分别如图19.2、图19.3所示。
composite(iml, im2, mask)其参数含义如下:
im1 参与混合的图片1;
im2 参与混合的图片2;
mask 混合遮罩。
其功能是使用mask来混合im1和im2,并且要求它们尺寸相同,作为mask的图片模式可以是“1”、“L”、“RGBA”。
【实例19-2】 演示了用blend()函数中的遮罩功能混合图像的实例,代码如下:
eval(image, fun)其参数含义如下。
im1输入的图片;
fun 给输入图片的每个像素应用此函数。
其功能是将输入图片的每个像素应用函数fun进行计算后返回,fun函数只允许接收一个整数类型参数。如果一个图片含有多个通道,则每个通道都会应用这个函数。
【实例19-3】 演示了使用eval()函数对图片进行处理的实例,代码如下:
merge(mode, bands)其参数含义如下。
mode 输出文件的模式;
bands用于合成图片的所有通道列表、元组等序列。
其功能是将多个图形通道合成一幅图像,并返回该合成图像实例。
19.1.5 Image模块中Image类的使用
上一节打开图片文件返回和引用图像的变量,实际上是Image模块中Image类对象的实例,运用该对象的方法可以访问图片的属性和对图片进行变换操作。Image类具有许多有用的方法和属性如下:
主要属性有:
Image.format 源图像格式;
Image.mode 图像模式字符串;
Image.size 图像尺寸。
主要方法有:
Image.convert(mode=None, matrix=None, dither=None, palette=0, colors=25
其主要参数含义如下:
mode 转换文件为此模式;
matrix 转换使用的矩阵(4或16元素的浮点数元组);
dither None时且转为黑白图时非0(1~255)像素均为白,也可以设置为此参数FLOYDSTEINBERG。
其功能是返回模式转换后的图像实例,目前支持的模式有“L”、“RGB”、“CMYK”,matrix参数只支持“L”、“RGB”。
注意: 非原地修改,函数的返回值为修改后的图像。
彩色图片轮换为“L”模式时,应用以下公式进行转换:
L = R * 299/1000 + G * 587/1000 + B * 114/1000
此外,运用matrix参数可以转换出不同意想不到效果的图片。
Image.transpose(method)
变换图像后,返回变换的图像(非原地修改),方法有:
Image.paste(im, box=None, mask=None)
其参数的意义如下:im 源图或像素值;box 为粘贴区域;mask 为遮罩。
功能是粘贴源至该图像,box可以为以下三种情况:
(xl,yl)将源图像左上角对齐xl,yl点,其余超出被粘贴的图像的区域被抛弃;
(xl,yl,x2,y2)源图像与此区域必须一致;
None 源图像与被粘贴的图像大小必须一致。
其他一些简单的方法如下:
【实例19-4】 演示了Image模块的一些函数的使用,代码如下:
【代码说明】代码中首先导入Pillow库,然后用Image模块中的open()函数打开当前目录下的图像文件“a.jpg”,并返回图像的实例。之后分别应用Image模块中的函数和Image模块中Image类的方法处理它,并输出其对比图。
【运行效果】运行该实例代码后,控制台输出如图19.6所示,输出了图像文件中的“a.jpg”的图像格式、图像模式、图像尺寸和图像通道列表。其他处理后的图像输出如图19.7~19.16所示。
19.1.6 使用ImageChops模块进行图片合成
该模块包含多种用计算通道中像素值的方式来进行图片合成的函数,其主要用于制作特效、合成图片等。这个模块包含的图像处理的函数很多,这里仅举几个例子说明其用法,更详细的函数及其使用可以参考官方网站。
【实例19-5】 演示了用以上多个函数合成图片效果的例子,其代码如下:
【代码说明】代码很简单,先导入使用的模块后打开用来合成的两幅图像,之后调用ImageChops模块中的函数来合成图像。
【运行效果】运行后得到的图像如图19.17~19.23所示,而最后产生的图像为纯黑色,因为比较的是同一幅图像。
19.1.7 使用ImageEnhance模块增强图像效果
该模块中函数的主要作用是增强图像的效果,主要可以用来调整图像的色彩、对比度、亮度、清晰度等,感觉上和调整电视机的显示参数一样。其主要的函数如下:
【实例19-6】 演示了使用图像增强模块的实例,代码如下。
【代码说明】代码中首先导入所需的Pillow库,然后分别建立两种调整器(色彩、亮度),最后在两层循环中输出调整后的图像对比。
【运行效果】运行此代码输出的4幅图像,如图19.24~19.27所示。
19.1.8 使用ImageFilter模块的滤镜
ImageFilter模块提供了滤镜功能,它也可以被用来建立图像特效,或以此效果作为中间结果进一步处理。该模块中提供了一些预定义的和供自定义的过滤器。
预定义的近十个过滤器中主要有:
【实例19-7】 演示了应用以上几种滤镜生成的对比图的实例,代码如下:
【代码说明】代码中首先导入了相关的库,之后建立应用滤镜的列表,并用for遍历使用并输出其对比图。
【运行效果】运行以上代码得到的对比效果图如图19.28~19.30所示:
19.1.9 使用ImageDraw模块画图
ImageDraw模块提供了2D绘图功能,可以通过创建图片来绘图,也可以在原有的图片上进行绘图,以达到修饰图片或对图片进行注释的目的。
使用ImageDraw模块画图的基本步骤为:
【实例19-8】 演示了一个用ImageDraw模块绘制的图形的实例,代码如下:
19.2 使用Pillow库处理图片举例
Pillow提供了非常实用的函数,很多情况下仅需使用一两个Pillow函数或者方法,就可以完成对图片的处理,如调整图片大小,转换图片格式等。配合Python的灵活性,使用Pillow可以创建一些非常实用的图片处理程序。本节主要介绍使用Pillow结合tkinter库建立图形化批量图片处理工具。
【实例19-9】 演示了批量图片文件格式转换的GUI程序,代码如下:
【代码说明】代码的主要部分为自定义的一个主类,类的构造函数中生成GUI窗口组件,并在窗口中添加相应的GUI组件供用户选择使用,主类的Browser()方法用来选择转换的图片文件的目录,Corw()方法用来遍历当前目录中的所选类型的图片文件并转换保存。
【运行效果】程序运行后,将显示如图19.32所示窗口,单击“浏览”按钮选择一个保存源图片的目录,接着在下方选择从一种图片格式转换为另一种图片格,最后单击“转换”按钮,即可批量转换图片的格式。转换操作完成后,在指定目录下新建一个目录,用来保存转换后的图片。
19.2.2 批量生成缩略图
生成缩略图也是常用的图片处理方式之一,使用Pillow生成缩略图可以使用Image的resize函数,因为使用resize函数可以重新指定图片的大小。
【实例19-10】 演示了程序使用Pillow模块批量生成图片的缩略图,代码如下:
【代码说明】该程序的代码和实例19-9基本结构相同,这里不作解释了。
【运行效果】程序运行后将显示如图19.33所示的窗口,输入缩略图的百分比,接着选择一个文件或目录进行转换,单击“转换”按钮,即可为选择的图片或选择目录中所有的图片生成缩略图。生成的缩略图与原图保存同一个目录中,缩略图的文件名由原文件名加上“_thumb.jpg”组成。
19.2.3 为图片添加Logo
使用Pillow为图片添加Logo,主要使用Image的paste函数。paste函数可以向图片中粘贴其他的图片。
【实例19-11】 演示的程序代码,就是使用Pillow模块为图片批量添加Logo:
【代码说明】其代码结构与前例相同。
【运行效果】程序运行后,显示如图19.34所示的窗口,选择一个作为Logo的图片,接着选择需要添加Logo的图片,然后在窗口下方选择Logo添加的位置,最后单击“添加”按钮,即可将Logo图片添加到图片的指定位置。
19.3 小结
本章介绍了一个Python处理图片的第三方模块Pillow,Pillow模块的功能非常强大,可对图片进行各种操作。在本章中首先介绍了Pillow模块的下载和安装。然后介绍了Pillow模块的处理图像的基本概念、Image模块、ImageChops模块、ImageEnhance模块、magefilter模块等模块的基本使用方法。最后本章介绍了使用Pillow处理图片的几个案例:使用 Pillow转换图片格式、生成缩略图、为图片添加Logo。此外,Pillow模块中还包括其他一些模块,可以参考相关资料。通过学习本章,你应掌握使用Pillow第三方模块进行图片处理的相关方法。
19.4 本章习题
相关文章:
python自学之《21天学通Python》(16)——第19章 用Pillow库处理图片
Pillow是Python2.X时代比较流行的Python ImagingLibrary(简称Pillow)图像处理库的分支,并修复了一些bug。Pillow提供了对Python3的支持,为Python3解释器提供了图像处理的功能。和Pillow库一样提供了广泛的文件格式支持、高效的内部…...
发布依赖到maven仓库
maven中央仓库是一个开放的仓库,所以我们也可以把自己开发的jar推送到远程仓库,这样可以直接引入pom依赖使用我们的库。 准备工作 ● 需要一个github账号(程序员必备) ● 网络代理(涉及到的网站通常没版本在国内直接访…...
Laravel-admin之自定义操作日志
laravel-admin是封装性极好的框架,自带的就有操作日志的记录,但是对于非开发人员可能看不懂这个日志,所以就想着给修改一下,以谁修改了什么,谁删除了什么,谁审核了什么,谁添加了什么类似&#x…...
用Python做了一个法律查询小工具,非常好用
用Python做了一个法律查询小工具,非常好用效果展示准备工作不会的话可以点我直达代码和视频讲解,我都准备好了主要代码哈喽兄弟,今天给大家分享一个Python tkinter制作法律查询小工具。 光爬虫大家也只能自己用用,就算打包了exe&…...
工作篇:触摸屏原理介绍
一、触摸屏概述 触摸屏作为一种新的输入设备,它是目前最简单、方便、自然的一种人机交互方式。 当接触了屏幕上的图形按钮时,屏幕上的触觉反馈系统可根据预先编程的程式驱动各种连结装置,可用以取代机械式的按钮面板,并借由液晶…...
Ep_操作系统面试题-操作系统的分类
答案 单体系统 整个操作系统是以程序集合来编写的,链接在一块形成一个二进制可执行程序,这种系统称为单体系统。 分层系统 每一层都使用下面的层来执行其功能。 微内核 微内核架构的内核只保留最基本的能力,把一些应用放到了用户空间 客户-…...
iframe或document监听滚动事件不起作用
有时候我们会遇到监听iframe或document的滚动事件不起作用的情况,在排除代码写错的情况下,我们应该考虑此时的document是否可以滑动。 1、为什么document不能监听滑动? 就很奇怪,明明页面时有滚动条的,为什么说document不可滑动…...
基频估计算法简介
基频估计算法 F0 estimate methods 估计F0的方法可以分为三类:基于时域、基于频域、或混合方法。本文详细介绍了这些方法。 所有的算法都包含如下三个主要步骤: 1.预处理:滤波,加窗分帧等 2.搜寻:可能的基频值F0(候选…...
linux修改DNS 系统版本Kylin V10桌面版
配置DNS在银河麒麟桌面操作系统V10 SP1 中修改DNS信息,直接修改/etc/resolv.conf文件中的DNS信息,不能生效。应该参考如下步骤:一、首先修改 /etc/systemd/resolved.conf文件,在其中添加DNS信息在终端中执行以下命令:s…...
如何使用 AWS Lambda 运行 selenium
借助 AWS Lambda 运行 selenium 来爬取网络数据。 简介 与手动从网站收集数据相比,爬虫可以为我们节省很多时间,对于爬虫的每次请求而言,这相当于 AWS Lambda 的每次函数的运行。 AWS Lambda 是一种将脚本部署到云的简单且价格低廉的服务&…...
认识Cesium旋转大小变量
前文代码中有如下;矩阵乘以旋转大小,还放入mat; Cesium.Matrix4.multiply(mat, rotationX, mat); 初看以为rotationX是一个数值,因为矩阵可以和数相乘; 但是看它的代码,rotationX是由一长串代码获得的&a…...
异响加持、吐槽声不断,小鹏G9难解困局
小鹏汽车的烦恼就好比红尘中的三千青丝,小鹏G9“惊魂48小时”的恐慌还未平息,车门异响等问题就已经层出不穷,再次将小鹏汽车推上风口浪尖。 可以毫不客气的说,G9承载着小鹏汽车盈利的希望,但在原本处于上升之势的G9却…...
【react】react18的学习
一、安装 $ create-react-app [Project name]默认支持sass 二、核心依赖 react:react 核心 react-dom:用于开发渲染web 应用; react-scripts:封装webpack服务; "start": "react-scripts start&quo…...
Ep_操作系统面试题-什么是线程,线程和进程的区别
1. 一个进程中可以有多个线程,多个线程共享进程的堆和方法区 (JDK1.8 之后的元空间),但是每个线程有自己的程序计数器、虚拟机栈和 本地方法栈。 2.进程是资源分配的最小单位,线程是CPU调度的最小单位 视频讲解: https://edu.csdn.net/course/detail/38090 点我…...
最流行的自动化测试工具,总有一款适合你(附部分教程)
前言 在自动化测试领域,自动化工具的核心地位毋庸置疑。本文总结了最顶尖的自动化测试工具和框架,这些工具和框架可以帮助组织更好地定位自己,跟上软件测试的趋势。这份清单包含了开源和商业的自动化测试解决方案。 1)Selenium …...
Shell高级——进程替换vs管道
以下内容源于C语言中文网的学习与整理,如有侵权请告知删除。 1、问题引入 这里将Shell中的“进程替换”与“管道”放在一起讲,是因为两者的作用几乎类似。 进程替换:将一个命令的输出结果传递给另一个(组)命令。 管…...
国内有哪些支持定制化的低代码平台?
编者按:贴合企业业务需求的系统才是好系统,高程度的定制能力平台意味着可以提供更高契合度的产品,更好地匹配业务需求。本文介绍了国内支持定制化的老厂商低代码平台,具有源码交付、私有化部署、国产化、数据对接等优势。关键词&a…...
Altair 宣布将于3月举办 Future.Industry 2023 全球虚拟大会
Altair(纳斯达克股票代码:ALTR)近日宣布将于 2023 年 3 月 8 - 9 日 举办年度全球虚拟大会 Future.Industry 2023。旨在探索影响全球未来的新趋势,并深入探讨仿真、高性能计算 (HPC)、人工智能(AI)和数据分…...
react lazyLoad学习记录
react lazyLoad学习记录1.lazyLoad用处2.使用2.1 react-router-dom5版本写法2.2 react-router-dom6版本写法1.lazyLoad用处 默认例如首页,如果有好十几个甚至百个路由,react是会默认一下全部把路由组件一下全部加载的,极可能造成页面卡顿。r…...
29 openEuler管理网络-配置网络绑定
文章目录29 openEuler管理网络-配置网络绑定29.1 使用nmcli29.2 使用命令行29.2.1 检查是否已安装Bonding内核模块29.2.2 创建频道绑定接口29.2.3 创建从属接口29.2.4 激活频道绑定29.2.5 创建多个绑定29 openEuler管理网络-配置网络绑定 29.1 使用nmcli 创建名为bond0的绑定&…...
RTT 全志D1s RDC2022纪念版开发板开箱使用分享与折腾记录
原文链接:https://bbs.aw-ol.com/topic/3021/ 作者caoxuetian 1:开发板介绍 RTT D1s RDC2022纪念版开发板是一块基于全志科技RISC-V内核 芯片 D1S的小尺寸开发板,尺寸仅为5.5cm*4cm,能够已非常小的体积带来舒适的开发感受&#…...
24日常实习万得一面面径
文章目录分析与复盘面试题分析与复盘 应该将项目进行复习好的,两个项目都应该对简历写的那些进行复习,以为日常不问项目的一面。哭死… 面试题 1.自我介绍 2.为什么从土木转到开发,学习java有哪些途径 3.介绍下项目中你觉得最有设计的模…...
MySQL的DML和DDL操作(1)
这里介绍几种DML操作INSERT INTO——插入记录插入一条记录插入一条记录 INSERT INTO table [(column [, column . ])] VALUES(value [,value . ]); 例子: insert into student values( 1,"承太郎" )default charset utf8;插入多条记录插入多条…...
Kafka系列之:Kafka生产者和消费者
Kafka系列之:Kafka生产者和消费者 一、Kafka生产者发送流程二、提高生产者吞吐量三、Kafka消费方式四、Kafka消费者总体工作流程五、按照时间消费Kafka Topic一、Kafka生产者发送流程 batch.size:只有数据积累到batch.size之后,sender才会发送数据,默认16K。linger.ms:如果…...
Linux进程间通信:信号量(一)
前提知识 在介绍信号量之前,先来看看一些概念和一些简单的前提知识: 进程间通信的前提是让不同的进程看到同一份资源。于是,就有提出让这种资源成为一种公共资源的方法,方法的提出,导致了一种新的问题的出现…...
Python笔记一之excel的读取
这里我常用的 python 对于 excel 的读取库有两个,一个是 xlsxwriter 用于操作 excel 的写入,一个是 xlrd 用于 excel 文件的读取。 使用的库的版本如下: xlsx1.2.6xlrd1.1.0 xlsxwriter 写入 excel 新建一个 excel import xlsxwriterpat…...
JavaScript Number 数字对象
文章目录JavaScript Number 数字对象JavaScript 数字所有 JavaScript 数字均为 64 位精度八进制和十六进制无穷大(Infinity)NaN - 非数字值数字可以是数字或者对象数字属性数字方法JavaScript Number 数字对象 JavaScript 只有一种数字类型。 可以使用也…...
设计模式-服务定位器模式
设计模式-服务定位器模式一、背景1.1 服务定位模式1.2 策略模式二、代码实战2.1 服务定位器2.2 配置ServiceLocatorFactoryBean2.3 定义一个支付的接口2.4 根据不同类型处理Bean2.5 controller层三、项目结构及测试结果3.1 测试结果3.2 项目结构及源码(欢迎star)四、参考资料一…...
Android Dalvik虚拟机 GC流程分析
前言 本篇继续介绍安卓dalvik虚拟机,介绍Dalvik虚拟技的GC流程。 GC结构体 dalvik/vm/alloc/Heap.h static const GcSpec kGcForMallocSpec {true, /* isPartial */false, /* isConcurrent */true, /* doPreserve */"GC_FOR_ALLOC" }; /* Not eno…...
opencv读入图片注意事项
来源:投稿 作者:蓬蓬奇 编辑:学姐 深度学习数据预处理中常用opencv读入图片,一般在__getitem__函数中调用。本文主要介绍opencv读取图片的一些细节以及注意事项。本文中使用的图片见第6节“opencv测试使用的图片”。 1.如何通过o…...
枣庄市网站建设/艺考培训
2009他来了。2008的任务基本完成,2009还有很快多事要做。...
园区网互联及网站建设/怎么推广自己的微信号
今天我们来讨论一下止回阀安装位置。那么止回阀的安装位置如何确定呢?泵前安装与泵后安装止回阀有何区别,泵前安装适用于哪些地方?止回阀通常要配合其他阀门一起使用,那么跟其他阀门配合使用时,止回阀要安装在哪里呢&a…...
wordpress上传媒体/seo搜索引擎专员
原标题:计算器知识详解计算器是现代人发明的可以进行数字运算的电子机器。现代的电子计算器能进行数学运算的手持电子机器,拥有集成电路芯片,但结构比电脑简单得多,可以说是第一代的电子计算机(电脑),且功能也较弱&…...
网站没有设置关键词/营销网站都有哪些
在模拟和数字PCB设计中,旁路或去耦电容(0.1uF)应尽量靠近器件放置。供电电源去耦电容(10uF)应放置在电路板的电源线入口处。所有情况下,这些电容的引脚都应较短。 在模拟布线设计中,旁路电容通常用于旁路电源上的高频信号,如果不加…...
杭州网站建设设计制作/关键词百度指数查询
被tkj大爷艹爆了5555整套模拟赛都是神仙思路题 那么这题题解 还有一个神仙做法,zory巨神在考场上找规律AC,自己都不会证。。我证明了一下(然而这货还是不认可自己的做法) 按照分割点的思路,我们for循环一次,每次找到比当前点小且最…...
网站建设客户告知书/推广普通话内容100字
test voice port 0/0/1 relay ring on 测试线路 csim start 1002 隐藏命令,用来测试路由 show voice port summary 查看端口 show dial-peer voice summary 查看路由 传统pots精准号码会被吃号 no digit-strip forward-digits all prefix 1001 配置T302需要在连…...