请教一个关于截图的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hsczy
V2EX    问与答

请教一个关于截图的问题

  •  
  •   hsczy 2023-07-05 08:25:11 +08:00 2497 次点击
    这是一个创建于 858 天前的主题,其中的信息可能已经有所发展或是发生改变。

    工作上有一个需求,要对服务器进行一些命令行的输入,然后对结果进行截图。现在用脚本输入命令行没什么问题,主要是截图不知道应该怎么解决。大家有没有什么好的方案? 脚本现在用的是 golang

    24 条回复    2023-07-06 09:00:29 +08:00
    klo424
        1
    klo424  
       2023-07-05 08:28:05 +08:00
    键盘上有个键是 Print Screen ,可以截全屏,无论你是远程服务器还是什么都能截下来,所见即所得。

    当然,如果你的键盘没这个键,那就白废了。这也是我始终使用 108 键键盘的原因之一。
    hsczy
        2
    hsczy  
    OP
       2023-07-05 08:38:22 +08:00
    @klo424 这个是一个方法。但是用脚本跑了命令行使用人工截图的话,那我也不应该用脚本跑命令了。我的描述有问题。
    hsczy
        3
    hsczy  
    OP
       2023-07-05 08:39:29 +08:00
    是这样的 需要跑一个命令行之后截取一个结果,同时需要定位终端位置并且截图终端内容。
    YZG
        4
    YZG  
       2023-07-05 08:55:00 +08:00 via iPhone
    autohotkey 试试看,可以模拟按键触发
    taygetus
        5
    taygetus  
       2023-07-05 09:28:54 +08:00
    https://github.com/faressoft/terminalizer
    Record your terminal and generate animated gif images or share a web player link terminalizer.com
    xiaoliu926
        6
    xiaoliu926  
       2023-07-05 09:39:34 +08:00
    先录视频,然后想截取哪一个画面都可以
    Vraw5
        7
    Vraw5  
       2023-07-05 09:44:08 +08:00
    没太懂,是要录制并回放终端嘛? script 和 scriptreplay 是不是你想要的?
    DengDDDD
        8
    DengDDDD  
       2023-07-05 09:45:01 +08:00
    拿到输出结果,像 snipaste 一样生成贴图
    rocksolid
        9
    rocksolid  
       2023-07-05 09:48:37 +08:00
    python 有 pyscreeze golang 应该也有类似的库吧
    hsczy
        10
    hsczy  
    OP
       2023-07-05 09:53:01 +08:00
    @xiaoliu926 那个太麻烦了吧 人工复核
    fzls
        11
    fzls  
       2023-07-05 09:53:08 +08:00
    @hsczy 写个 python 脚本,然后在 golang 里传参调用? python 应该有这类截图的包,在 golang 里先计算好区域传过去应该就可以了
    tool2d
        12
    tool2d  
       2023-07-05 09:53:21 +08:00
    一般服务器都是 linux 的,返回结果也是命令行,很少有图形结果,有也是以图片文件的形式返回。

    只能假设服务器是 windows 了。那就类似于自动化点击脚本了。
    hsczy
        13
    hsczy  
    OP
       2023-07-05 09:53:26 +08:00
    @taygetus 感谢 我去研究一下
    fzls
        14
    fzls  
       2023-07-05 09:54:29 +08:00
    比如我随便搜了搜
    https://blog.csdn.net/xun527/article/details/105357384

    或者可以去问问 ChatGPT
    caqiko
        15
    caqiko  
       2023-07-05 09:54:32 +08:00   1
    pipe stdout to image ?
    hsczy
        16
    hsczy  
    OP
       2023-07-05 09:54:57 +08:00
    @Vraw5 不是的。因为我印象中见过一个脚本。用 python 写的然后后台运行终端命令之后有相应的结果截图输出。所以想看看是怎么实现的
    hsczy
        17
    hsczy  
    OP
       2023-07-05 09:56:34 +08:00
    @fzls 感谢,我现在的问题在于如果是单纯使用截图的话不太好定位系统呼出来的终端坐标位置。全屏截图的话其他的位置也是不需要的。为了 3.5 版本的,给的建议也是全屏截图
    hsczy
        18
    hsczy  
    OP
       2023-07-05 09:56:56 +08:00
    @caqiko 类似于这种
    hsczy
        19
    hsczy  
    OP
       2023-07-05 09:57:14 +08:00
    @Leexiaobu 好主意。我之前没有想到过这个方法
    hsczy
        20
    hsczy  
    OP
       2023-07-05 11:18:12 +08:00
    @caqiko 感谢 使用 imagemagick 完成了想要的东西。
    fzls
        21
    fzls  
       2023-07-05 14:28:19 +08:00
    @hsczy 靠经验定位咯,或者没超过一屏幕的话,就直接在输出结果前后加一些明显的标志,然后在 python 中去使用 opencv 定位这些标志(类似于二维码三个角的大黑方块那种概念),然后确定截图范围
    WuSiYu
        22
    WuSiYu  
       2023-07-05 18:06:51 +08:00 via iPhone
    获取文本输出然后渲染一张( doge
    deiphi
        23
    deiphi  
       2023-07-05 18:08:25 +08:00
    可以使用 ffmpeg 桌面截图。
    hsczy
        24
    hsczy  
    OP
       2023-07-06 09:00:29 +08:00 via Android
    感谢大家的集思广益。截图的方法因为会有好多不同的设备进行截图,所以定位终端的这个活还是比较难做的。现在的想法是将 stdout 收集然后制作截图
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     854 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 22:13 PVG 06:13 LAX 14:13 JFK 17:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86