离线GIF制作编辑全攻略:小萌GIF的隐私、量产与压缩实践
做图这件事最烦的不是不会做而是做到一半被工具卡住。我最近一直在用一款叫小萌GIF的免费工具主打的就是GIF离线制作编辑全程不联网、不套路没有那些用两天就让你充会员、导出时再盖个水印的恶心操作。不管是把视频片段做成表情包还是把一组截图拼成动图甚至批量压缩微博评论区的魔性GIF它都够用。如果你也受够了在线网站的上传限制、排队导出和隐私顾虑这篇文章就是为你准备的。1. 为什么要找一款离线GIF工具——三个绕不开的场景1.1 在线工具的灰色地带隐私、水印与套路先说说我为什么对在线GIF网站越来越失望。早年做新媒体的时候我习惯用网页工具处理动图流程就是打开浏览器、上传素材、等它转码、下载结果。听起来挺方便但用得越多痛点越明显。第一是素材隐私基本等于裸奔。有一次我把一段还没对外发布的宣传视频片段传到在线工具里做GIF预览第二天甲方居然在别的地方看到了近乎一样的动图画面。不能说一定就是那个网站的锅但我从此再也不敢把手里的原生素材随便上传到不明来历的站点。对很多设计师和运营来说素材就是饭碗问题一旦泄露后果完全不可控。第二是水印和广告套路防不胜防。免费工具总要养活自己这个我理解但很多网站的做法是先让你花十分钟调好参数点击导出的瞬间弹出一个免费用户仅支持下载带水印版本的提示想无水印就得开会员。更气人的是那种试用三天自动续费的订阅模式你只是想要一张5秒的表情包它却要你的信用卡信息这已经超越了薅羊毛的范畴属于明抢了。第三是效率和稳定性没法保证。在线工具上传几十MB的视频经常超时导出高峰期还得排队运气差一点直接服务器繁忙请稍后重试。做图本来就是赶工的活还得看网站脸色时间成本完全不可控。1.2 离线工具的硬需求量产、隐私、稳定性后来我开始系统性寻找离线方案发现真正的需求无非三个关键词能量产、够私密、稳定跑。先说量产。做自媒体的人都懂一个系列内容往往需要几十甚至上百张动图。要是每张都走在线流程光上传下载就够喝一壶。本地工具全部在内存和硬盘里操作处理一百张和一张的速度差距仅仅是排队问题不存在网络瓶颈。再说私密。素材不出本机从源视频导入到最终导出数据流从头到尾都在本地。这一点对剪片子的、做设计的、搞运营的朋友来说是刚需产品未上线之前的演示动图、内部培训材料、公司业务流程录屏都不适合交给第三方服务器。最后是稳定。离线工具不依赖网络没有掉线风险也没有今天维护升级的突发情况。你在高铁上、飞机上、客户的会议室里只要电脑有电就能开工。1.3 小萌GIF的定位与第一印象小萌GIF就是在这种背景下进入我的工作流的。第一次用是朋友推荐的当时我半信半疑因为免费工具见多了真做了才知道这款工具确实与众不同。它没有内置广告页没有弹窗引导注册功能区干净得像一个老牌本地软件。视频转GIF、图片序列合成GIF、GIF拆帧、裁剪压缩、加文字、调帧率看得到的都是直接能点的功能没有解锁会员按钮。你不需要登录账号不需要绑定邮箱下载打开就是完整的核心功能这种爽快感在现在的软件生态里已经很少见了。2. 功能拆解一个工具吃透GIF全流程2.1 制作从视频和图片序列到GIF小萌GIF的制作模块分两大入口视频转GIF和图片序列合成GIF。视频转GIF是最高频的功能。它支持常见的MP4、MOV、AVI、WebM等格式导入后可以直接拖动时间轴选择片段起点和终点不需要先剪好素材再用另一款工具导出一遍。选定片段后右边参数面板会让你设置输出宽度、帧率、缩放模式等选项。这里有个细节很贴心预览窗口会实时显示不同帧率下的动效流畅度肉眼直接对比不用等导出后才发现卡顿或者文件太大这个设计对新手特别友好。图片序列合成GIF则适合另一类场景设计师交付逐帧动画、用户用连续截图演示操作步骤、甚至程序员把一组算法生成的图像拼成动态效果。你只要把PNG或JPG按顺序拖进去软件会自动按照文件名排序也可以手动调整顺序。每一帧还能单独设置延迟时间做出关键动作停一拍、过程快速带过那种节奏感这在制作演示类动图时非常实用。2.2 编辑裁剪、缩放、压缩、加字制作只是入门编辑才是日常。小萌GIF的编辑功能让它在同类离线工具里显得格外能打。裁剪工具支持自由区域框选和固定比例裁剪。比如做公众号封面动图我经常需要把16比9的素材裁成3比2直接在预览框里拖动选区就能精准控制不用自己心算像素比例。缩放功能我几乎每次都用。做表情包有时原图是1080P视频输出却只要240像素宽做产品演示动图时又想从540像素放大到720像素。小萌GIF的缩放算法对边缘处理得比较干净放大的图像不会像很多粗糙工具那样糊成一片。加文字功能支持自定义字体、字号、颜色、描边和透明度。这里有个很实际的用法给操作演示GIF加步骤注释比如第一步右键点击桌面、第二步选择属性在关键帧上放几个字比任何口头解释都直观。2.3 参数背后的原理色深、帧率、采样很多人以为GIF就是把几十张图片拼起来其实它有一套自己的底层逻辑理解这些参数背后的原理用起来才不会被体积问题反复折磨。GIF格式的最大限制是8位色深也就是整张图最多同时显示256种颜色。真实照片通常有几十万种颜色转成GIF时必须做颜色量化相近的颜色会被合并。这就是为什么实拍视频转GIF之后经常出现色彩断层、天空出现一圈圈色带的原因。小萌GIF在处理时提供了调色板的颜色数设置从256色一路降到16色颜色越少体积越小但画质损失也越明显。做卡通素材用低色数问题不大做实拍素材建议保持256色再用其他手段控体积。帧率决定了动图的流畅度。人眼感知流畅的动画大约需要24帧每秒但GIF是网络分享产物体积和流畅度之间需要权衡。我自己的经验头像和表情包用10到15帧每秒就够用大尺寸演示动图用8到10帧每秒视频里快速运动的部分建议不要低于12帧。帧率每提高一倍文件体积基本也翻倍这是非常线性的关系所以别盲目把参数拉满。抽帧是另一个隐藏技巧。有些视频一秒变化其实很小比如人物的手势讲解真正关键的动作只占三分之一时间。这时候与其全帧导出不如设置跳帧选项每隔两帧取一帧。小萌GIF提供了按固定间隔抽帧和按关键帧抽帧两种模式前者适合匀速运动后者适合讲解类视频能大幅度削减体积观感却几乎不受影响。3. 完整实操把一段15秒视频变成适配公众号的GIF3.1 准备素材与参数设定我拿一个实际案例走一遍完整流程。假设你要把一段15秒的产品宣传视频做成动图要发在公众号正文里目标是宽度不超过480像素动图时长6秒体积尽量控制在1MB以内。先把原始视频导入小萌GIF软件会自动解析出视频时长、分辨率和编码信息。这里留意一下源文件质量和帧率如果原视频是30帧每秒输出10帧每秒时软件会等间隔抽取帧不会造成突然跳跃感。如果原视频低于15帧每秒那建议输出用8帧每秒否则流畅度反而会被劣化。3.2 关键步骤逐一走一遍第一步确定截取区间。在预览窗口拖动起止点选择最能体现产品核心卖点的6秒片段。通常我不会选一堆过场特效或者静止画面这些段落做成动图会让读者无所适从。第二步设置输出参数。宽度设为480像素保持画面宽高比软件会自动同步计算出对应的高度。这里有个实用建议公众号正文推荐的图片宽度是640像素以内但如果只是作为插图文中的过渡动图480像素完全足够体积还更可控。帧率选择10帧每秒这是演示类动图的黄金区间。第三步预览并微调。小萌GIF的预览是本地实时渲染的点击播放就能看到最终效果。这个时候我会重点检查几个地方第一个是画面有没有明显的卡顿第二个是文字边缘是否有毛刺第三个是色彩有没有大面积失真。预览满意后点击导出得到第一版GIF。3.3 压缩优化把5MB降到1MB以内第一版导出后体积大概率在2到5MB之间直接放进公众号会被后台反复压缩画质惨不忍睹。这时候就要走压缩流程。打开小萌GIF的体积优化面板里面有几个选项降低帧率、缩小尺寸、减少颜色数、抽帧。既然是6秒10帧每秒共60帧这个帧数已经比较精简了优先考虑调整颜色数和尺寸。先试试把颜色数从256降到192通常体积能减20%到30%对演示类素材画质影响微弱。再对比一下从480像素宽降到440像素宽按面积算宽度下降8%左右体积能再少10%左右。这两步操作后体积一般能降到1.2MB上下。如果还不够就把帧率从10降到8整体帧数从60变成48体积再砍一刀。几个来回下来最终输出体积控制在900KB左右画质在公众号手机端看完全够用。这个三刀流顺序你一定要记住先减颜色数再减尺寸最后减帧率。因为前两步画质损失不容易被察觉而帧率下降带来的卡顿感是最直观的。4. 进阶玩法matplotlib动画一键导出GIF4.1 为什么做数据图也要GIF普通人做GIF是为了好玩做技术的人做GIF是为了表达数据变化。我经常看到数据开发群里有人问matplotlib怎么把动态图保存成GIF因为官方文档写得不细实战踩坑却一大堆。你辛苦跑完一次仿真把不同时刻的结果画成图如果没有动图就只能贴十几张静态图读者翻半天也看不出变化趋势。GIF能在一张图里呈现时间维度是做数据展示、论文汇报、算法演示的利器。小萌GIF可以成为这整个流程的终点站先用matplotlib批量输出每一帧的静态图再导入小萌GIF合成GIF、调整时间节奏、压缩体积。不过其实matplotlib自己也能直接保存GIF我把两种方案结合讲一下你会更清楚什么时候用什么。4.2 完整代码与参数选择如果动画本身不算特别复杂直接用matplotlib的FuncAnimation保存GIF是最省事的路。下面这段代码我用一个正弦波随时间变化的小例子演示完整流程这个套路也适用于折线图、柱状图、热力图、散点图等一切能逐帧更新的图表。import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation # Python一行装依赖pip install matplotlib pillow plt.rcParams[font.sans-serif] [SimHei, Microsoft YaHei, PingFang SC] plt.rcParams[axes.unicode_minus] False fig, ax plt.subplots(figsize(6, 3.6), dpi100) x np.linspace(0, 2 * np.pi, 100) def update(frame): ax.clear() y np.sin(x frame * 0.1) ax.plot(x, y, color#2E86AB, linewidth2) current (frame * 0.1) % (2 * np.pi) ax.set_title(fsin(x t), t {current:.2f}) ax.set_xlim(0, 2 * np.pi) ax.set_ylim(-1.5, 1.5) ax.grid(alpha0.3) return ax, ani FuncAnimation(fig, update, frames50, interval40, blitFalse) ani.save(sine_wave.gif, writerpillow, fps20, dpi80) print(GIF saved)重点解释几个参数为什么这么设置。frames50表示总帧数50配合interval40帧间隔40毫秒整个动画的过程大概是2秒节奏刚好。fps20是保存到GIF时的播放帧率也就是每秒播放20帧总时长50除以20等于2.5秒。如果fps太低动画显得一顿一顿fps太高说明实际的渲染帧数没跟上保存会出现重复帧错觉。dpi设置了导出图片的分辨率80dpi配合figsize约6英寸宽像素宽度大概在480左右和上一节公众号动图的场景正好对齐。还有一个容易踩的坑是writer参数。保存GIF时建议明确指定writerpillow因为pillow用起来省心适合大多数人。如果你没装ImageMagick系统默认的保存方式会直接报错而pillow基本是开箱即用。代码保存后同级目录里就出现了sine_wave.gif直接用浏览器或者看图软件打开就能看到波形从左往右移动。4.3 踩过的坑字体、闪帧、体积第一中文字体不设置直接变方块。matplotlib默认字体对中文支持很差你在标题里写了一行正弦波随时间变化保存出来的GIF上就是几个方格。解决方法是前面代码里那两行rcParams设置把sans-serif字体列表改成自己系统里存在的中文字体。第二闪帧问题。如果你在update函数里没有用ax.clear()清空上一帧的内容保存结果会出现重影叠加。但用了clear之后又要注意ax对象的其他属性比如坐标范围会恢复到默认值所以set_xlim、set_ylim这类设置需要在每帧都重复执行一次保证画面不会忽大忽小地跳变。第三体积爆炸。frames提到200帧、dpi提到150GIF直接几十MB发微信提示无法上传。这时候就把dpi降到80fps降到15frames控制在60到100之间画质和体积就能平衡。如果手头的动态图确实帧数很多更稳妥的思路是先用matplotlib把帧保存为PNG序列再交给小萌GIF做二次压缩工具配合能省下很多事。5. 常见问题与避坑实录5.1 问题速查表我整理了一个高频问题的排查速查表都是实际动手才会遇到的场景收藏起来比临时搜索效率高得多。现象可能原因解决办法GIF背景变成黑色源视频含有透明通道或未正确编码视频转GIF时关闭透明选项确保输出为RGB模式图片序列合成顺序错乱文件名未自然排序使用001、002、003的零填充命名方式后重新导入压缩后画面出现彩点颜色数设置过低、抖动算法关闭提升颜色数至256开启抖动选项文字导出后变成乱码源字体编码不兼容切换系统字体库中的常用字体抽帧后画面前后跳跃抽帧间隔过大降低抽帧间隔例如每隔一帧取一帧视频导入后没有声音GIF格式不支持音轨先导出无声视频再导入或后期合成matplotlib保存时报错缺少pillow或ImageMagick命令行执行pip install pillow保存的GIF只有第一帧writer参数未指定或编码异常明确指定writerpillow后重试5.2 独家心得三种必须避免的操作习惯第一不要在源视频上直接做无限放大。有些人喜欢把一段720P的视频放大到1080P再转GIF认为这样更清晰。其实GIF是8位色格式放大的清晰度提升非常有限反而让体积成倍增长。正确做法是保持原始分辨率或适度缩小用小尺寸换取体积优势。第二不要只依赖一种压缩手段。我见过有人遇到GIF太大就直接把帧率降到5帧每秒结果画面卡成PPT。更合理的思路永远是先调尺寸和颜色数最后才考虑帧率。前面实操环节里的三刀流顺序几乎适用于所有超体积场景。第三不要忘记备份源文件。GIF是一次性产物后期要改文字、裁长度都得回源视频重新导出。我以前图省事只留GIF后来要改一个错别字只能重新找原素材再剪一遍浪费时间不说还可能因为源文件被清理而彻底无法复原。5.3 处理透明背景和异形GIF的两个小技巧透明背景GIF是很多人的心头痛。小萌GIF支持PNG图片序列合成时保留透明信息但有个前提条件源PNG必须是真透明不能把透明部分做成白色。检查方法是把PNG丢到看图软件里背景呈灰白棋盘格才是正常的。合成时注意在导面板勾选保留透明通道否则软件会默认填成纯白底。异形GIF指的是非标准矩形比如对话气泡造型、圆角头像。这类素材直接用透明背景的PNG序列合成最靠谱不要在视频转GIF环节期待它自动扣好形状。把气泡素材做成PNG序列每个气泡图形只需要一张不同状态用文字替换即可这样合成出的异形动图体积还特别小。6. 结尾之前再说点实在的我的实际使用体验里最打动我的不是某一次功能惊艳而是稳定。做了很多年内容工具换了又换最后留下来的一定是那种打开就用、不打扰你的软件。小萌GIF在线下处理大量素材时的稳定表现让我慢慢养成了本地处理动图的习惯也不再因为在线工具突然改规则而被迫中断工作。最后再分享一个小技巧如果你经常做系列表情包可以先把所有源视频片段按主题命名好放在一个文件夹导入小萌GIF时保持素材命名规律一致然后逐段转出GIF。整个过程一气呵成比来回切换在线网站至少节省一半时间。工具是死的但工作流是活的本地化处理加上合理的参数管理才是真正让你不再为做GIF发愁的关键。

相关新闻

三极管饱和Vce到底低不低?基极电流和负载才是关键

三极管饱和Vce到底低不低?基极电流和负载才是关键

1. 被0.2V“约定”坑过的开关电路:三极管饱和Vce到底低不低我最早对三极管饱和的理解,和大多数人一样,一句话:饱和导通时Vce大概0.2V,算嘛,直接取0.2V往下算。这个数值伴随了我很久,直到一次真实…

2026/10/7 4:51:42 阅读更多 →
SCR型ESD器件的回滞与维持机制解析

SCR型ESD器件的回滞与维持机制解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 4:51:42 阅读更多 →
Delphi 13.1 实战:EhLib.VclFmx 13.0.015 无源码包安装配置与避坑指南

Delphi 13.1 实战:EhLib.VclFmx 13.0.015 无源码包安装配置与避坑指南

简介:这份资源是面向Delphi开发者的EhLib.VclFmx 13.0.015组件集,适用于使用RAD Studio 13.1进行VCL与FireMonkey跨框架界面开发的工程师,尤其适合需要数据感知控件、表格编辑、图表展示等增强能力的中高级开发者。压缩包为7z格式&#xff0c…

2026/10/7 4:51:42 阅读更多 →

最新新闻

FPGA高扇出网络时序优化:从XDC约束到RTL寄存器复制的完整实战

FPGA高扇出网络时序优化:从XDC约束到RTL寄存器复制的完整实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 6:38:59 阅读更多 →
Agent-Reach:轻量级 DeepSeek CLI 调用工具

Agent-Reach:轻量级 DeepSeek CLI 调用工具

1. 项目概述:一个轻量级、开箱即用的智能体调用 CLI 工具Agent-Reach 不是一个抽象概念,也不是某个大厂闭源平台的代号——它是一个真实存在的、托管在 GitHub 上的开源命令行工具,核心目标非常朴素:让开发者能像敲curl一样&#…

2026/10/7 6:38:59 阅读更多 →
大模型多轮对话的上下文模式设计:从选型到状态机实战

大模型多轮对话的上下文模式设计:从选型到状态机实战

1. 先看三个翻车现场:没有上下文模式会怎样context-mode这个词,最近在 LLM 应用开发的圈子里被频繁提起。我最早看到它的时候,以为只是一个简单的开关——开一下,AI 就能记住对话,关一下,就是普通的单轮问答…

2026/10/7 6:38:59 阅读更多 →
AI Agent从零搭建实战:任务拆解、工具调用与状态管理全复盘

AI Agent从零搭建实战:任务拆解、工具调用与状态管理全复盘

做了半年AI Agent,我把踩过的坑和最终跑通的方案写下来。如果你正打算从零搭建一个自己的智能体,或者已经在折腾却总感觉差一口气,这篇内容应该能让你少走不少弯路。先说清楚“Agent-Reach”是个什么东西。它的名字拆开看就挺直白&#xff1a…

2026/10/7 6:38:58 阅读更多 →
广告传媒AI Agent落地实践:从素材整理到方案生成

广告传媒AI Agent落地实践:从素材整理到方案生成

广告传媒公司的AI Agent落地,我前后折腾了三个月,从最初的素材管理痛点到最后的方案辅助智能体上线,中间踩过的坑和想明白的事情,今天一次性说清楚。这事儿得从一次比稿说起。凌晨两点,项目组在赶一个快消客户的提案&a…

2026/10/7 6:38:58 阅读更多 →
中文电子病历NER实战:BERT-wwm + BiLSTM-CRF完整复现指南

中文电子病历NER实战:BERT-wwm + BiLSTM-CRF完整复现指南

简介:一套面向中文电子病历命名实体识别(NER)的深度学习实验系统,基于CCKS2019评测数据构建,专注解决医疗文本中疾病、临床表现、治疗方案等医学实体的自动抽取问题,适合医疗NLP研究者、算法工程师以及相关…

2026/10/7 6:37:58 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:02:00 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 7:15:40 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 5:29:09 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 6:26:51 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 8:21:32 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 4:21:51 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 1:18:13 阅读更多 →