tmux如何在窗格中显示图像?

2024-10-01 07:34:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在tmux的窗格中显示动画GIF或任何其他图像。你知道吗

我正在使用asciimatics来实现这一点,并修改了一个示例程序(图片.py)收件人:

  • 显示单个图像
  • 在“Ctrl+C”上不显示错误消息
  • 接受单个命令行arg“image filename”

这是我的脚本,唯一的问题是它似乎每10秒就对显示的图像进行一次缓慢的刷新。由于图像是静态图像,如何删除此刷新?你知道吗

你知道吗图片.py

from __future__ import division
from asciimatics.effects import BannerText, Print, Scroll
from asciimatics.renderers import ColourImageFile, FigletText, ImageFile
from asciimatics.scene import Scene
from asciimatics.screen import Screen
from asciimatics.exceptions import ResizeScreenError
import sys

total = len(sys.argv)-1
if (total < 1):
    print ("Usage: IMG")
    sys.exit(1)

# Parsing args one by one
IMG = str(sys.argv[1])

def demo(screen):
    scenes = []
    effects = [
        Print(screen,
              ColourImageFile(
                  screen, IMG, 
                  screen.height-2,
                  uni=screen.unicode_aware,
                  dither=screen.unicode_aware),
                  0,
                  stop_frame=200
            )
    ]
    scenes.append(Scene(effects))
    screen.play(scenes, stop_on_resize=True)


# capture ctrl+c and exit nicely
import signal
import sys
def signal_handler(sig, frame):
        sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)

if __name__ == "__main__":
    while True:
        try:
            Screen.wrapper(demo)
            #Screen.wrapper(demo, catch_interrupt=True)
            sys.exit(0)
        except ResizeScreenError:
            sys.exit(0)

Tags: from图像importtrueimgsignaldemosys
1条回答
网友
1楼 · 发布于 2024-10-01 07:34:40

我只需要设置stop_frame=0,它就如所希望的那样工作,正如指定的in the docs

示例用法

$ python image.py /images/fox.jpg

你知道吗图片.py

from __future__ import division
from asciimatics.effects import BannerText, Print, Scroll
from asciimatics.renderers import ColourImageFile, FigletText, ImageFile
from asciimatics.scene import Scene
from asciimatics.screen import Screen
from asciimatics.exceptions import ResizeScreenError
import sys

total = len(sys.argv)-1
if (total < 1):
    print ("Usage: IMG")
    sys.exit(1)

# Parsing args one by one
IMG = str(sys.argv[1])

def demo(screen):
    scenes = []
    effects = [
        Print(screen,
              ColourImageFile(
                  screen, IMG, 
                  screen.height-2,
                  uni=screen.unicode_aware,
                  dither=screen.unicode_aware),
                  0,
                  stop_frame=200
            )
    ]
    scenes.append(Scene(effects))
    screen.play(scenes, stop_on_resize=True)


# capture ctrl+c and exit nicely
import signal
import sys
def signal_handler(sig, frame):
        sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)

if __name__ == "__main__":
    while True:
        try:
            Screen.wrapper(demo)
            #Screen.wrapper(demo, catch_interrupt=True)
            sys.exit(0)
        except ResizeScreenError:
            sys.exit(0)

相关问题 更多 >