curl 的小妙用, 在终端里展示 gif / image / markdown

2025 年 12 月 2 日
 pDJJq

昨天发布了一个在终端里展示个人资料的小玩意 https://www.v2ex.com/t/1176162

但是有些朋友评论说: "不够帅, 不够帅"

熬了一个通宵, 现在更新支持 GIF / IMAGE / Markdown , 绝对能满足大部分的创作需求了.

效果展示:

在线体验:

命令行里运行: curl -N me.pdjjq.org

我实在不知道该起什么名字, 最开始是想要做一个有意思的展示简历的小玩意. 但是现在感觉只会变成一堆蔡徐坤/奶龙的 gif.

4769 次点击
所在节点    程序员
38 条回复
Alias4ck
2025 年 12 月 2 日
建议多看看 ascii art
另外你这个还需要网络( 完全没必要啊 直接做成 cli 不行?
Mark24
2025 年 12 月 2 日
挺有意思的,感谢主包
Kaisar
2025 年 12 月 2 日
刷新率跟不上
cmos
2025 年 12 月 2 日
这个很有意思,看了一下原理和设计,用 Golang 更健壮一些,包括内容和图像的可变化性。time.Ticker 配合 goroutine ,循环发送。用 fatih/color 或者直接写 escape sequence 也行。
tsvico
2025 年 12 月 2 日
今日天气能支持吗
pDJJq
2025 年 12 月 2 日
@Alias4ck ASCII Art 的表现能力怎么能和图像相比呢? 目的就是在所有的终端里不做任何配置都能显示, curl 就是最好的选择, 谁会去`apt install xxx` 再去运行就只为了看个动态图像呢?
pDJJq
2025 年 12 月 2 日
@cmos yes, 主要是为了在 cloudfalre worker 里运行. 这样我不需要支付昂贵的服务器费用. 😭
arfaWong
2025 年 12 月 2 日
codehz
2025 年 12 月 2 日
缺少一个垂直同步,我记得可以使用 CSI?2026h 来同步
Tink
2025 年 12 月 2 日
这个比较强,everything

https://github.com/mmulet/term.everything
realpg
2025 年 12 月 2 日
这是什么原理?
正常 curl 的输出不是顺序的
Alias4ck
2025 年 12 月 2 日
@pDJJq 哥们 你 docs 里面写的就是这个啊 图片/GIF 转 ASCII 艺术(支持彩色)
突然来句怎么和图像对比. 你也没实现图像啊

真正的图片显示也不是你这种啊 只有支持图片协议的终端才有比如 kitty /ghostty/iterm
HTravel
2025 年 12 月 2 日
你如果能理解终端显示的就是一维的字符流,然后通过 ESC 字符切换到控制模式来更改接下来的字体颜色、背景、闪烁、清除当前行、换行什么的,然后各个终端软件自然还能继续扩展,在 ESC 字符切换到控制模式后用另外的命令字来表示接下来的是图片、视频什么的。你就会发现,但凡你 GUI 编程时自绘过组件,就会发现让终端显示这些东西了然无趣,压根没任何技术难点。

甚至你可以直接解析这个字符流,将其转换为 HTML ,直接在浏览器中看到你想要的效果。HTML/CSS/JS 实现这一切很难么?
pDJJq
2025 年 12 月 2 日
@Alias4ck #12 还真是
pDJJq
2025 年 12 月 2 日
@codehz 收到!
pDJJq
2025 年 12 月 2 日
@HTravel

当前是通过 curl + 控制字符实现的.和 TUI 相比环境相当受限: 单向接收消息, 无系统信息, 网络延迟.

不如你写个 demo? 给看看怎么通过 curl + Terminal 做更复杂功能. 我对 terminal 以及 termimal 支持的 Graphics Protocol 了解的并不多, 看看你的.
pDJJq
2025 年 12 月 2 日
@codehz 哥, 我服了. 确实有用. 我顺便也把过去的清屏改成光标复位 refresh 帧, 确实稳定了不少. 非常感谢!
codehz
2025 年 12 月 2 日
@pDJJq 但你开头还是要补充一个清屏,你运行两次可能会有上次输出的残留在缓冲区了
HTravel
2025 年 12 月 2 日
@pDJJq 我闲的蛋疼玩这种?我之所以清楚,就是因为终端中有些效果与 GUI 中不一致,我为了让我的软件能同时在两种环境下运行且运行效果尽可能一致,才了解了下终端原理。最后发现,终端做到极致,不就是另一个 GUI 吗?那我直接在终端中打开 GUI 界面不就行了嘛。

我愿意花时间做的软件,都必须是能用一辈子那种。所以数据同步、增备、全备、快照,这类软件我全部自己实现了一遍。以及针对不同数据,比如文本类看小说、音频类听音乐、视频类看影视综艺、剪贴板在能支持浏览器上就能跨设备同步这种,我都给自己写了一套,并且能通过 termux 放到安卓里面完全跑起来,且挂后台不耗电。

至于其他的,我想想原理就行了,不可能投入时间的,完全不值得。
pDJJq
2025 年 12 月 2 日
@codehz #18 YES!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1176289

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX