How to create ASCII animation in a console application using Python 3.x?

前端 未结 5 750
有刺的猬
有刺的猬 2020-12-08 18:01

I would like to port this question to Python (Windows + Linux + Mac Os)

How to create ASCII animation in Windows Console application using C#?

Thank you!

5条回答
  •  时光取名叫无心
    2020-12-08 18:14

    I just ported my example with the animated gif to ASCII animation from my answer here to python. You will need to install the pyglet library from here, as python unfortunately has no built-in animated-gif support. Hope you like it :)

    import pyglet, sys, os, time
    
    def animgif_to_ASCII_animation(animated_gif_path):
        # map greyscale to characters
        chars = ('#', '#', '@', '%', '=', '+', '*', ':', '-', '.', ' ')
        clear_console = 'clear' if os.name == 'posix' else 'CLS'
    
        # load image
        anim = pyglet.image.load_animation(animated_gif_path)
    
        # Step through forever, frame by frame
        while True:
            for frame in anim.frames:
    
                # Gets a list of luminance ('L') values of the current frame
                data = frame.image.get_data('L', frame.image.width)
    
                # Built up the string, by translating luminance values to characters
                outstr = ''
                for (i, pixel) in enumerate(data):
                    outstr += chars[(ord(pixel) * (len(chars) - 1)) / 255] + \
                              ('\n' if (i + 1) % frame.image.width == 0 else '')
    
                # Clear the console
                os.system(clear_console)
    
                # Write the current frame on stdout and sleep
                sys.stdout.write(outstr)
                sys.stdout.flush()
                time.sleep(0.1)
    
    # run the animation based on some animated gif
    animgif_to_ASCII_animation(u'C:\\some_animated_gif.gif')
    

提交回复
热议问题