精华内容
下载资源
问答
  • I'm trying to generate an animated GIF using images2gif.py (pastebin to the most recent verson : bit.ly/XMMn5h ).I'm using this Python script:__author__ = 'Robert'from images2gif import writeGiffrom ....

    I'm trying to generate an animated GIF using images2gif.py (pastebin to the most recent verson : bit.ly/XMMn5h ).

    I'm using this Python script:

    __author__ = 'Robert'

    from images2gif import writeGif

    from PIL import Image

    import os

    file_names = sorted((fn for fn in os.listdir('.') if fn.endswith('.gif')))

    #['animationframa.png', 'animationframb.png', ...] "

    images = [Image.open(fn) for fn in file_names]

    size = (150,150)

    for im in images:

    im.thumbnail(size, Image.ANTIALIAS)

    print writeGif.__doc__

    filename = "my_gif.GIF"

    writeGif(filename, images, duration=0.2)

    However, I am getting the following error:

    File "C:\Python27\lib\images2gif.py" , line 418, in writeGifToFile

    globalPalette = palettes[ occur.index(max(occur)) ] ValueError: max()

    arg is an empty sequence

    It seems to me that occur is empty. What is wrong, and is there a better way?

    解决方案

    OK I have tested your exact code on two different machines, and it works perfectly on both. One machine is Ubuntu 12.04 and the other is running Windows XP. They are both using Python 2.7, and the latest version of images2gif which I downloaded from here. I recommend the following:

    check what version of python and the libraries you are using, try and get the latest ones.

    test it on another machine

    try and uninstall python and all the libraries and try and re-install

    展开全文
  • Sorting VisualizerThere are some python scripts which can visualize several famous sorting algorithms and generate the animations via Matplotlib.Click the picture below to play the sample video....

    Sorting Visualizer

    There are some python scripts which can visualize several famous sorting algorithms and generate the animations via Matplotlib.

    Click the picture below to play the sample video.

    (You can also experience the webpage edition.)

    Environment Configuring

    Install Python 3 or Anaconda which includes it.

    Install Matplotlib via pip. However, if you have installed Anaconda before, you needn't install Matplotlib any more.

    If you need export the animations of sorting algorithms as MP4 files, you should download an offical release of FFMpeg (there is the link). Taking Windows for example, after downloading, extract it to anywhere, and add [your_path]/ffmpeg/bin to the environment variable PATH to ensure you can run the command ffmpeg directly in CMD.

    Usage

    Under the root directory of the project, run the commands like the following format to call all functions:

    python output.py arg1 [arg2 [arg3]]

    Details of the three arguments above:

    There are three posible options as "arg1":

    play : Play an animation of a specific sorting algorithm or all algorithms in a new window, as a "figure" to Matplotlib.

    save-html : Save the animation as a HTML page with a sequence of images.

    save-mp4 : Save the animation as a MP4 video.

    There are nine posible options as "arg2":

    all (default) : Show the visualization of all sorting algorithms in the animation.

    bubble-sort : Only show the visualization of bubble sorting algorithm in the animation. The following arguments have similar functions.

    comb-sort

    heap-sort

    insertion-sort

    merge-sort

    quick-sort

    selection-sort

    shell-sort

    There are four posible options as "arg3":

    almost-sorted : Sort an almost-sorted sequence.

    few-unique : Sort a few-unique sequence.

    random (default) : Sort a random sequence.

    reversed : Sort a descending sequence.

    For example, run python output.py play heap-sort reversed to create a new window to play the animation of sorting, which use heap sorting algorithms and sort a descending sequence.

    There's nothing else need to be introduced. Have fun!

    展开全文
  • 当然,如果有做前端或者搞设计的同学,上面的效果应该不难实现,那如果想通过Python呢?有没有包可以调用呢?答案是有的——pygame 这个包适合用来开发游戏,今天就不打算给大家详细介绍了,还是想给大伙儿放松放松...

    前言

    大家都看过彩带飘落吧?这个在比较喜庆的场合是很常见的:

    3d99122734c2834e55eb8ce35580edd8.gif

    还有“跑马灯”效果,听起来很陌生,其实很常见,下面的就是:

    c9aaf196a01838a68397e6930e8f869f.gif

    好了,相信大家都有了初步的认识。当然,如果有做前端或者搞设计的同学,上面的效果应该不难实现,那如果想通过Python呢?有没有包可以调用呢?

    答案是有的——pygame

    27802935baa428a145cbdb47699f96c2.png

    这个包适合用来开发游戏,今天就不打算给大家详细介绍了,还是想给大伙儿放松放松,以后有机会再多写写它。

    不多说,直接甩出代码:

    import pygame

    from random import randint, choice

    screen_length = 700

    screen_width = 500

    # 模拟彩带飘落的类,掉落的词作为彩带

    class Word_drop(pygame.sprite.Sprite):

    # 设置属性:包括字体、下落速度、彩带来源、彩带框的属性

    def __init__(self):

    pygame.sprite.Sprite.__init__(self)

    self.font = pygame.font.SysFont(name='幼圆', size=10, bold=True, italic=True)

    self.speed = randint(15, 30)

    self.word = self.getWord()

    self.image = self.font.render(self.word, True,

    (randint(0, 255), randint(0, 255), randint(0, 255)))

    self.image = pygame.transform.rotate(self.image, randint(87, 93))

    self.rect = self.image.get_rect()

    self.rect.topleft = (randint(0, screen_length), -20)

    # 获取掉落的词

    def getWord(self):

    length = randint(1, 8)

    word = ''

    for i in range(length):

    word += choice('qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM')

    return word

    # 设置彩带更新的条件

    def update(self, *args):

    self.rect = self.rect.move(0, self.speed)

    if self.rect.top > screen_length:

    self.kill()

    # 实现"跑马灯"效果的函数

    def word_translate(jx, ztw1, ztw2, screen_length, text):

    max_ztw = max(ztw1, ztw2)

    jx.x -= 5

    if jx.x < 0 - max_ztw:

    jx.x = (screen_length + 10)

    screen.blit(text, [jx.x, jx.y])

    if __name__ == '__main__':

    # 初始化工作

    pygame.init()

    pygame.font.init()

    # 渲染字体,两行字

    a = pygame.font.SysFont(name='幼圆', size=50, bold=True, italic=True)

    word1 = " 中国"

    text1 = a.render(word1, True, (255, 0, 0), (0, 0, 0))

    word2 = "我超级爱你"

    text2 = a.render(word2, True, (255, 0, 0), (0, 0, 0))

    # "跑马场"字体框的属性

    _, _, ztw1, zth1 = text1.get_rect()

    jx1 = pygame.Rect(screen_length, (screen_width / 2 - zth1), ztw1, zth1)

    _, _, ztw2, zth2 = text2.get_rect()

    jx2 = pygame.Rect(screen_length, (screen_width / 2), ztw2, zth2)

    # 其他相关设置

    screen = pygame.display.set_mode((screen_length, screen_width))

    clock = pygame.time.Clock()

    wordGroup = pygame.sprite.Group()

    while True:

    clock.tick(30)

    screen.fill((0, 0, 0))

    # 设置退出的条件

    for event in pygame.event.get():

    if event.type == pygame.QUIT:

    pygame.quit()

    exit(0)

    # 彩带飘落

    word_object = Word_drop()

    wordGroup.add(word_object)

    wordGroup.update()

    wordGroup.draw(screen)

    # "跑马场"

    word_translate(jx1, ztw1, ztw2, screen_length, text1)

    word_translate(jx2, ztw1, ztw2, screen_length, text2)

    pygame.display.update()

    好了,来看看效果:

    1bfbd1a68a69c6c319c8eb8f57d7b2fe.gif

    还不错吧,有没有感觉好玩呢?

    当然,如果需要,代码直接拿去用,根据自己的想法去改就行!

    本文分享 CSDN - 松鼠爱吃饼干。

    如有侵权,请联系 support@oschina.cn 删除。

    本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

    展开全文
  • 先看效果图sin_cos.gif循序渐进一个超级简单的绘图示例:sample1.pngimport numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animation#建立一个画板fig = plt.figure()#把画板分成1x1的...

    先看效果图

    cbedecac079c

    sin_cos.gif

    循序渐进

    一个超级简单的绘图示例:

    cbedecac079c

    sample1.png

    import numpy as np

    import matplotlib.pyplot as plt

    import matplotlib.animation as animation

    #建立一个画板

    fig = plt.figure()

    #把画板分成1x1的栅格,并使用1号格子

    #ax = fig.add_subplot(2,2,4)分成2x2的栅格,使用4号格子

    ax = fig.add_subplot(1,1,1)

    x = np.linspace(0, 5, 20)

    #在ax的对象上建立'两条线',根据需要可以命名

    line1 = ax.plot(x, x**2)

    line2 = ax.plot(x, x**3)

    #根据对象的所有点的坐标,依次连接成线

    plt.show()

    让图动起来

    cbedecac079c

    exp.gif

    import numpy as np

    import matplotlib.pyplot as plt

    import matplotlib.animation as animation

    import cv2

    import imageio

    from PIL import Image, ImageSequence

    #建立一个画板

    fig = plt.figure()

    #把画板分成1x1的栅格,并使用1号格子

    #ax = fig.add_subplot(2,2,4)分成2x2的栅格,使用4号格子

    ax = fig.add_subplot(1,1,1)

    x = np.linspace(0, 5, 20)

    #在ax的对象上建立'两条线',根据需要可以命名,因为需要让line1动起来,所以给他命名了

    xdata,ydata = [],[]

    line1, = ax.plot([], [])

    ax.plot(x, x**3)

    #根据对象的所有点的坐标,依次连接成线

    def init():

    global xdata,ydata

    del xdata[:]

    del ydata[:]

    def data_gen():

    global x

    for i in x:

    yield i,i**2

    def update(xy_pos):

    global xdata,ydata

    xpos,ypos = xy_pos

    xdata.append(xpos)

    ydata.append(ypos)

    line1.set_data(xdata,ydata)

    anima = animation.FuncAnimation(fig, update, data_gen, blit=False, interval=3,repeat=True, init_func=init)

    plt.show()

    稍微解释一下动图的机制:

    从最开始的栗子可以知道,这种绘制曲线的方法的本质是用线段连接散列的点,由于相邻两个点的间距很小,绘制的曲线看起来比较平滑。同时,程序始终依据曲线的散列的点来绘制,而这些点存放在两个数组里,横纵左边分别在一个数组,用xdata,ydata=line1.get_data(),可以得到曲线line1的已经存在的点,数组里所有的点都会被绘制。关键的来了,如果相邻两次绘制过程中,如果在数组里添加了新的点,那么后一次绘制就会多绘制一些点,表现出来的样子就是曲线伸长,这就是动图的原理。

    是时候着重介绍一下函数animation.FuncAnimation了

    fig:画板对象

    update:相邻两次绘制之间调用,用以更新曲线绘制的节点,实现动图

    data_gen:是一个序列,用于生产新的节点,其返回值会被当做参数传给update函数,供update函数处理。比如data_gen是一个列表,那么列表中每一个值会依次传递到update函数中,上面代码中date_gen是一个生成器,每次返回一个值(可能是int,也可以是任意其他类型),传递到update函数中。

    interval:相邻两次绘制的时间间隔

    repeat:绘制完曲线后,是否反复绘制,即从新开始绘制

    init_func:每次重新绘制曲线前都要执行的初始化函数

    最开始的栗子的代码

    import numpy as np

    import matplotlib.pyplot as plt

    import matplotlib.animation as animation

    import cv2

    import imageio

    from PIL import Image, ImageSequence

    def data_gen(t=0.1):

    cnt = 0

    x = np.linspace(0,np.pi*2,100)

    while cnt < np.pi*2:

    cnt += 0.1

    yield x

    for i in range(len(x)):

    x[i] = x[i] + t

    def init():

    ax.set_ylim(-10, 10)

    ax.set_xlim(0, 20)

    del xdata[:]

    del ydata[:]

    sin_line.set_data(xdata, ydata)

    fig = plt.figure()

    ax = fig.add_subplot(1,1,1)

    #竖直的直线,lw是线的宽度

    line2, = ax.plot([2*np.pi,2*np.pi], [-1,1], lw=1)

    #[-1,1]分为100份

    dpi_range = np.linspace(-1,1,100)

    #上半圆和下半圆

    ax.plot(dpi_range+10, np.sqrt(1-dpi_range*dpi_range), 'b',lw=1)

    ax.plot(dpi_range+10, -np.sqrt(1-dpi_range*dpi_range),'b', lw=1)

    #水平线line3

    circle_xdata = [2*np.pi, 9]

    circle_ydata = [0, 0]

    line3, = ax.plot(circle_xdata,circle_ydata,'r--',lw=1)

    #圆心到圆上的线line4

    d_xdata = [10, 9]

    d_ydata = [0, 0]

    line4, = ax.plot(d_xdata,d_ydata,'g-',lw=1)

    #将面板栅格化,可以注释看效果很好懂。

    ax.grid()

    #正弦曲线

    sin_line, = ax.plot([], [], lw=1)

    #正弦曲线上的点的横纵坐标集合,初始为空

    xdata = list(np.linspace(0,np.pi*2,100))

    ydata = []

    #让横纵坐标轴单位长度在屏幕上一样长

    plt.axis('equal')

    theta1 = 0.0

    def run(data):

    #data是data_gen的返回值,是一个数组

    #xdata = list(data)

    ydata = np.sin(list(data))

    xdata = np.linspace(0,np.pi*2,100)

    sin_line.set_data(xdata, ydata)

    global theta1

    #水平线两个端点的坐标更新

    circle_xdata[1] = 10 - np.cos(theta1)

    circle_ydata[0] = np.sin(theta1)

    circle_ydata[1] = np.sin(theta1)

    line3.set_data(circle_xdata, circle_ydata)

    #圆心到圆上的线断端点坐标更新

    d_xdata[1] = 10 - np.cos(theta1)

    d_ydata[1] = np.sin(theta1)

    line4.set_data(d_xdata,d_ydata)

    theta1 = theta1 + 0.1

    ani = animation.FuncAnimation(fig, run, data_gen, blit=False,

    interval=40,repeat=True, init_func=init)

    plt.show()

    一颗小心心

    cbedecac079c

    一颗小心心

    import numpy as np

    import matplotlib.pyplot as plt

    import matplotlib.animation as animation

    import cv2

    import math

    import imageio

    from PIL import Image, ImageSequence

    #建立一个画板

    fig = plt.figure()

    #把画板分成1x1的栅格,并使用1号格子

    #ax = fig.add_subplot(2,2,4)分成2x2的栅格,使用4号格子

    ax = fig.add_subplot(1,1,1)

    #有趣的是把下面的100换成500竟然不能生成完整的GIF

    #难道有帧数限制

    x = np.linspace(-1.139, 1.139, 100)

    #在ax的对象上建立'两条线',根据需要可以命名

    xdata,ydata = [],[]

    line1, = ax.plot([], [],'r')

    line2, = ax.plot([],[],'r')

    ydata2 = []

    #根据对象的所有点的坐标,依次连接成线

    def init():

    global xdata,ydata,ydata2

    ax.set_ylim(-2, 2)

    ax.set_xlim(-2, 2)

    del xdata[:]

    del ydata[:]

    del ydata2[:]

    return line1,line2

    def data_gen():

    global x

    for i in x:

    b = pow(i, 2)

    b = -pow(b, 1/3)

    c = pow(i, 2) - 1

    delta = pow(b,2) - 4 * c

    if pow(b,2) - 4 * c < 0:

    delta = 0

    #print(i,b,c)

    yield i,(-b+pow(delta, 1/2))/2,(-b-pow(delta, 1/2))/2

    def update(xy_pos):

    global xdata,ydata,ydata2

    xpos,ypos,ypos2 = xy_pos

    xdata.append(xpos)

    ydata.append(ypos)

    ydata2.append(ypos2)

    line1.set_data(xdata,ydata)

    line2.set_data(xdata,ydata2)

    return line1,line2

    anima = animation.FuncAnimation(fig, update, data_gen, blit=False,

    interval=50,repeat=True, init_func=init)

    plt.show()

    #下面的代码是用来生成GIF的

    anima.save('heart.gif', writer='pillow')

    im = Image.open('heart.gif')

    images = []

    iter = ImageSequence.Iterator(im)

    index = 1

    for frame in iter:

    frame.save('heart%d.png' % index)

    index = index + 1

    for i in range(1, index):

    images.append(imageio.imread("heart" + str(i)+".png"))

    print(len(images))

    imageio.mimsave("heart2.gif",images,fps=30)

    展开全文
  • import timefrom tkinter import*tk=Tk() #建立一个框架对象tkcanvas=Canvas(tk,width=500,height=500) #建立一个画布对象canvas,属于tk对象canvas.pack() ...
  • 我正在尝试创建一个动画绘图从一个文本文件,我在以前的代码中使用Odeint生成的。此外,系统的状况已被记录到不同的文本文件中。我已经把这些信息分成2个数组,分别是数字和条件。从这里开始,我将条件转换成我希望...
  • 我目前正在研究python bokeh,我想知道是否可以使用bokeh构建一个动画计数器。我要做的是从地图中选择一个地区的男性数量,并显示从0到特定地区的男性数量。请给我一些例子,如果有的话,或者用下面的地图给我看一个...
  • I'm working on a python project using spyder from anaconda and I am trying to get the animation function working.I found a basic animation example here: ...
  • Python文件: python制作GIF迷宫动画.py Python文件: python制作GIF迷宫动画.py
  • 我用Tkinter搜索了一个简单的动画代码,但是我发现了非常不同的例子,我无法理解正确的方法来编写动画。这里我的工作代码显示一个简单的移动圆:import tkinter as tkimport timeroot=tk.Tk()canvas=tk.Canvas(root,...
  • Python真的是无穷的好用,涉及内容非常广泛,比如接下来给大家介绍的制作动画,就可以利用python实现,相信小伙伴们听到这些内容肯定是非常感兴趣的,至于怎么去实现?大家想不想了解呢?下面小编就给大家整理出来了...
  • Python 动图 动画制作 —— moviepy matplotlib animation
  • Manim is an animation engine for explanatory math ... It's used to create precise animations programmatically, as seen in the videos at 3Blue1Brown.InstallationManim runs on Python 3.7. You can in...
  • 前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系...Python 的 Matplotlib 是最常用的图表绘制以及数据可视化库。我们对折线图、柱状图以及热力图都比...
  • Python 中有很多不错的数据可视化库,但是极少能渲染 GIF 图或视频动画效果。本文就分享一下如何用 MoviePy 作为其他可视化库的通用插件,制作动画可视化效果,毕竟这年头,没图不行,有动图更好。MoviePy 能让我们...
  • 本文实例讲述了Python使用matplotlib绘制动画的方法。分享给大家供大家参考。具体分析如下:matplotlib从1.1.0版本以后就开始支持绘制动画下面是几个的示例:第一个例子使用generator,每隔两秒,就运行函数data_gen...
  • 一直觉得电影特效,动画制作这些都很什么,在google上搜索了下python开发电影特效的内容,发现了几个不错的软件,都支持python脚本开发.HoudiniHoudini (电影特效魔术师) Side Effects Software的旗舰级产品,是创建...
  • cocos2d from python Animation 动画的实现转载请注明http://blog.csdn.net/ssihc0直接上代码说明#coding=utf-8import sysimport ossys.path.insert(0,os.path.join(os.path.dirname(__file__),'..'))import ...
  • 计划2020年1月18日完成4小时课时,完成动画设计1 轮换序列的表格svn地址:svn://gitee.com/bigearrabbit/kevinpython/kevinanimation检出版本:5表格设计按照30度一个图片,360/30 = 12个图片。每行为一个时间的状态...
  • 当然,如果有做前端或者搞设计的同学,上面的效果应该不难实现,那如果想通过Python呢?有没有包可以调用呢? 答案是有的——pygame 这个包适合用来开发游戏,今天就不打算给大家详细介绍了,还是想给大伙儿...
  • Python动画设计教程】系列文章目录 【第一讲】软件准备 【第二讲】搭建界面,Excel读取,图片读取 【第三讲】图像绘制 【第四讲】制作动画 【第五讲】问题处理 文章目录1 轮换序列的表格2 根据表格轮换图片3 使用...
  • Python真的是无穷的好用,涉及内容非常广泛,比如接下来给大家介绍的制作动画,就可以利用python实现,相信小伙伴们听到这些内容肯定是非常感兴趣的,至于怎么去实现?大家想不想了解呢?下面小编就给大家整理出来了...
  • 其实前面程序中的高亮显示已经是动画效果了。程序会用红色、黄色交替显示几何图形的边框,这样看上去就是动画效果了。实现其他动画效果也是这个原理,程序只要增加一个定时器,周期性地改变界面上图形项的颜色、大小...
  • 计划2020年1月18日完成4小时课时,完成动画设计1 轮换序列的表格svn地址:svn://gitee.com/bigearrabbit/kevinpython/kevinanimation检出版本:5表格设计按照30度一个图片,360/30 = 12个图片。每行为一个时间的状态...
  • python换脸GIF动画制作

    千次阅读 2018-02-14 12:37:30
    最近在进行换脸操作时,经常需要进行变换过程的动画演示,把GIF文件制作过程和效果写出来,供大家参考。
  • Python文件: python制作GIF迷宫动画自动打开gif版本.py
  • 本文实例讲述了Python使用matplotlib绘制动画的方法。分享给大家供大家参考。具体分析如下:matplotlib从1.1.0版本以后就开始支持绘制动画下面是几个的示例:第一个例子使用generator,每隔两秒,就运行函数data_gen...
  • Bar3D(3D 柱状图)name -> str图例名称x_axis -> strx 坐标轴数据。需为类目轴,也就是不能是数值。y_axis -> stry 坐标轴数据。需为类目轴,也就是不能是数值。data -> [list], 包含列表的列表数据项,...
  • 下面我们就分别从Python 和MATLAB 介绍Git 动图的制作方法。 一,在MATLAB 中实现GIF动图制作 效果:下面是一个制作矩形函数和其频谱的动图。 Note:主要的思想就是画出第一张图,然后在追加第二张,第三张图,并...
  • Matplotlib是一个Python的2D绘图库,它以各种硬拷贝格式...本文主要介绍了Python通过matplotlib绘制动画简单实例,具有一定借鉴价值,需要的朋友可以参考下,希望能帮助到大家。matplotlib从1.1.0版本以后就开始支持...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 599
精华内容 239
关键字:

python动画制作

python 订阅