Как создать анимацию ASCII в консольном приложении с помощью Python 3.x?

Я хотел бы портировать этот вопрос Python (Windows + Linux + Mac OS)

Как создать анимацию ASCII в Windows Console application с помощью C#?

Спасибо!

6
задан Community 23 May 2017 в 10:30
поделиться

3 ответа

Я только что перенес свой пример с анимированным gif в ASCII-анимацию из моего ответа здесь на python. Вам нужно будет установить библиотеку pyglet из здесь , так как python, к сожалению, не имеет встроенной поддержки анимированных GIF. Надеюсь, вам понравится :)

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')
11
ответ дан 8 December 2019 в 05:53
поделиться

Простая консольная анимация, протестированная на python3 в Ubuntu. addch () не нравится этот не-ascii-символ, но он работает в addstr ().

#this comment is needed in windows:
#  encoding=latin-1
def curses(win):
    from curses import use_default_colors, napms, curs_set
    use_default_colors()
    win.border()
    curs_set(0)

    row, col = win.getmaxyx()
    anim = '.-+^°*'
    y = int(row / 2)
    x = int((col - len(anim))/2)
    while True:
        for i in range(6):
            win.addstr(y, x+i, anim[i:i+1])
            win.refresh()
            napms(100)
            win.addch(y, x+i, ' ')

if __name__ == "__main__":
    from curses import wrapper
    wrapper(curses)

@Philip Daubmeier: Я тестировал это в Windoze, и это не работает :(. В будущем есть три основных варианта: (выберите)

  1. Установите стороннюю библиотеку windows-curses ( http://adamv.com/dev/python/curses/)
  2. Примените патч windows-curses к python ( http://bugs.python.org/msg94309 )
  3. Полностью отказаться от проклятий ради чего-нибудь другого.
3
ответ дан 8 December 2019 в 05:53
поделиться
2
ответ дан 8 December 2019 в 05:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: