我们经常会遇到一些对于多媒体文件修改的操作,像是对视频文件的操作:视频剪辑、字幕编辑、分离音频、视频音频混流等。又比如对音频文件的操作:音频剪辑,音频格式转换。再比如我们最常用的图片文件,格式转换、各个属性的编辑等。因为多媒体文件的操作众多,本文选取一些极具代表性的操作,以代码的形式实现各个操作。
一、图片操作
操作图片的模块有许多,其中比较常用的两个就是 Pillow
和 opencv
,两个模块各有优势。其中 opencv
是计算机视觉处理的开源模块,应用的范围更加广泛,从图像处理到视频处理,再到物体检测等。而 pillow
相比直线就单纯的多,其大多数操作都是围绕图像而展开的。
1.1、格式转换
图片格式有多种多样,最直观的感受就是图片后缀。而格式之间的差异不仅仅是后缀的差异,最为明显的就是 png
格式图片,同其它图片有着最为直观的区别。下面我们就看看在Python中如何转换格式,我们先安装 pillow
模块:
pip install pillow
然后看看如何导入模块以及如何读取图像:
from PIL import Image # 读取图像 img = Image.open('ycjc.jpg') # 显示图像 img.show()
我们有了上面的基础操作之后,就可以开始进行格式转换了,我们用有村大妹子的图片作为素材:
我们可以看到这是一张白色背景的图片,我们将它转成 png
看看效果:
from PIL import Image # 读取图像 img = Image.open<a style="color:transparent">本文来源gao($daima.com搞@代@#码(网5</a>('ycjc.jpg') # 格式转换,其中A为透明度 png = img.convert('RGBA') # 保存图像,因为是RGBA格式,所以后缀应该为png png.save('ycjc.png')
输出的图片我就不放了,我们观察输出图片会发现,白色背景好像变透明了。不要怀疑,这只是心理作用,其实图片看上去是不会有任何变化的。但是实际上图片从原来的 RGB
三个色道变成了 RGBA
四个色道,我们会发现,图片变大了:
虽然 A
色道的透明度全部都是0,但是实际上还是存在这个色道,所以大小方面有了明显的增加。更多转换模式可以参考超全Python图像处理讲解(多图预警)。
1.2、图片裁剪
图片裁剪的操作也非常常用,我们来看看 pillow
如何裁剪图片:
from PIL import Image # 读取图像 img = Image.open('ycjc.jpg') # 裁剪图像,调用crop方法,传入裁剪区域的元组 img_crop = img.crop((100, 100, 400, 400)) # 保存裁剪后的图像 img_crop.save('ycjc_crop.jpg')
我们调用 crop
方法,传入裁剪区域的元组进行裁剪,元组的内容为左上角的坐标(前两个参数)即右下角的坐标(后两个参数)。效果图如下: