matplotlib库疑难问题---5、保存动态图
matplotlib库疑难问题---5、保存动态图
一、总结
一句话总结:
保存图像的话,直接save方法即可,指定好 写入工具(writer)就好:ani.save('sin.gif', writer='imagemagick', fps=30)
二、保存动态图
博客对应课程的视频位置:5、保存动态图-范仁义-读书编程笔记
https://www.fanrenyi.com/video/43/375
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
# 激活matplotlib后端的渲染引擎qt5
%matplotlib qt5
x=np.arange(0,2*np.pi,0.01)
y=np.sin(x)
fig=plt.figure()
line,=plt.plot(x,y)
# 动画函数
def animate(i):
line.set_ydata(np.sin(x+i/100))
return line,
# 动画初始函数
def init():
line.set_ydata(np.sin(x))
return line,
"""
fig:figure对象
animate:动画函数,不断更新图像的函数,生成新的xdata和ydata
frames:动画的帧数
init_func=init:动画初始化函数为init,自定义开始帧。
interval=20:动画每一帧时间间隔为20ms,interval的单位以ms计算。
blit=True:选择更新所有点,还是仅更新产生变化的点。应选择True,但mac用户请选择False,否则无法显示。
"""
# 现在frames=100,interval=20,动画有100帧,每帧20ms,所以动画总共持续2s
ani=animation.FuncAnimation(fig=fig,func=animate,frames=100,init_func=init,interval=20,blit=True)
plt.show()
ani.save('sin.gif', writer='imagemagick', fps=30)
保存图像的话,直接save方法即可,指定好 写入工具(writer) 就好
ani.save('sin.gif', writer='imagemagick', fps=30)
三、ImageMagick 的安装及使用
转自或参考:ImageMagick 的安装及使用
https://www.cnblogs.com/lfri/p/11601211.html
一、什么是Imagemagick?
ImageMagick是一款免费开源的图片编辑软件。既可以通过命令行使用,也可以通过C/C++、Perl、Java、PHP、Python或Ruby调用库编程来完成。ImageMagic的主要精力集中在性能,减少bug以及提供稳定的API和ABI上。
二、下载和安装
这里以Windows为例
使用16-bit在处理图片时比8-bit慢15%至50%,内存也为2倍。比如处理一张1024x768像素的图片8-bit要使用3.6M内存,16-bit要使用7.2M内存。
这里我们选择下载官方推荐的文件,也就是第一个:ImageMagick-7.0.8-12-Q16-x64-dll.exe
这个7.0版本和6点几版本有些不同,系统环境变量都是自动配置好的。
使用 magick --version 查看是否安装成功:
三、使用
如果很多子命令不能直接使用,则可以把他们当做magick的子命令使用,如:
identify bbb.png
magick identify bbb.png
1、转换格式
magick test.jpg test.png
表示把test.jpg这个图片另存一份为test.png,同时修改了图片名称和格式
(原来jpg比png小不少
2、合成gif
magick a.jpg b.jpg c.jpg test.gif
magick *.jpg images.gif
将指定的图片合成一个gif(好像以第一张图的大小为准)
3、调整图片大小
按比例改变
magick b.png -resize 200% b1.png magick convert b.png -resize 200% b1.png magick convert -resize 200% b.png b1.png
图片宽扩展为原来的2倍,高缩小为原来的一半
magick convert b.png -resize 200x50% b7.png magick convert b.png -resize 200%x50% b8.png
宽调整为100,高按原来图片宽高比例跟着调整
convert -resize 100 b.png b15.png
高调整为200,宽按原来图片宽高比例跟着调整
convert -resize x200 b.png b16.png
4、移除图片内嵌的所有配置文件
magick convert -strip 1.jpg
5、裁剪图片
crop参数可以把一副图像分成若干块大小一样的图片
magick img1.jpg -crop 500x500 dest.jpg
例如,原图片尺寸为1920x1200,所以可以分割出12块图片,注意如果尺寸不是目标图片的整数倍,那么右边缘和下边缘的一部分图片就用实际尺寸
在原始图像上裁剪一张指定尺寸的小图
magick img1.jpg -crop 600x450+300+600 dest.jpg
600x450是宽乘高,+300+600是横纵坐标
6、图片取反
magick convert a.jpg -negate canny.jpg
7、压缩图片
将图片质量降为原来的10%(即压缩掉了90%),取值范围1 ( 最低的图像质量和最高压缩率) 到100 ( 最高的图像质量和最低压缩率),默认值根据输出格式有75、92、100,选项适用于JPEG / MIFF / PNG.
magick convert -quality 80 1.jpg 2.jpg
实例:生成缩略图:
-resize,定义输出的缩略图尺寸;-quality 70,降低缩略图的质量为70%;-strip:让缩略图移除图片内嵌的所有配置文件,注释等信息,以减小文件大小。
magick convert -resize 100x200 -quality 70 -strip 1.jpg 2.jpg
8、给图片加边框
设置边框颜色为蓝色(也可以用rgb(0,0,255)或者rgb(0%,0%,100%)代替),宽的边框和高的边框分别为宽的5%、高的5%,也就是说,图片的高和宽都增大了10%
magick 1.jpg -bordercolor blue -border 5% 2.jpg
9、滤镜
magick convert monochrome .jpg -monochrome monochrome_example.jpg magick convert charcoal .jpg -charcoal 1.2 charcoal _example.jpg
-monochrome没有相关的配置选项;但是-charcoal需要设置一个相关因子,1左右能实现类似炭笔绘画的效果。
magick convert a.jpg -edge 3 edge.jpg magick convert a.jpg -colors 2 color.jpg
减少为2种颜色,这些选项也可以一起使用。
10、边缘检测
magick convert a.jpg -canny 1 canny.jpg
使用canny算法,带粗粒度参数。
图像取反的话就很好看了:
magick convert a.jpg -canny 1 -negate canny.jpg
参考链接:
1. https://www.cnblogs.com/wbxk/p/9794094.html
2. https://blog.csdn.net/qq_24127015/article/details/86523738
3. https://blog.csdn.net/wangmeitingaa/article/details/88885711
4. https://www.imooc.com/article/46112?block_id=tuijian_wz
本系列博客对应课程位置:
1、解决中文乱码问题-范仁义-读书编程笔记
https://www.fanrenyi.com/video/43/371
2、将曲线平滑-范仁义-读书编程笔记
https://www.fanrenyi.com/video/43/372
3、matplotlib绘图核心原理-范仁义-读书编程笔记
https://www.fanrenyi.com/video/43/373
4、画动态图-范仁义-读书编程笔记
https://www.fanrenyi.com/video/43/374
5、保存动态图-范仁义-读书编程笔记
https://www.fanrenyi.com/video/43/375
6、显示图片-范仁义-读书编程笔记
https://www.fanrenyi.com/video/43/376
7、去掉刻度和边框-范仁义-读书编程笔记
https://www.fanrenyi.com/video/43/383
8、几个点画曲线-范仁义-读书编程笔记
https://www.fanrenyi.com/video/43/384
9、画箭头(综合实例)-1-范仁义-读书编程笔记
https://www.fanrenyi.com/video/43/391
9、画箭头(综合实例)-2-范仁义-读书编程笔记
https://www.fanrenyi.com/video/43/392
10、画直方图-范仁义-读书编程笔记
https://www.fanrenyi.com/video/43/393
11、画动态直方图-范仁义-读书编程笔记
https://www.fanrenyi.com/video/43/394