如何在PlantUML序列图中嵌入本地图片?
PlantUML序列图嵌入本地非sprite图片方案
可以正常嵌入本地存储的jpg、png、gif等非sprite格式普通图片,你之前触发语法错误是插入位置错误导致的:序列图语法中,;和:之间的区域属于箭头结构定义区,仅支持填写序号、箭头样式、返回标记等结构类参数,不支持Creole富文本解析,图片标签必须放在支持富文本的内容区域内。
具体实现方式
嵌入消息文本
直接在消息行的:之后,用Creole图片标签引入本地路径即可,支持相对于当前puml文件的相对路径,也支持系统绝对路径:@startuml ' 相对路径示例 Alice -> Bob: <img:./assets/user_avatar.png> 带本地图片的交互消息 ' Windows绝对路径示例,注意将原生反斜杠替换为正斜杠避免解析错误 Bob --> Alice: <img:D:/project/demo/result_icon.png> 处理完成 @enduml注意:本地文件路径尽量不要包含中文、特殊空格,避免路径解析失败。
嵌入注释块
如果不需要把图片和消息绑定,可以放在各类注释块中,绑定在参与者侧或者消息流上方/下方:@startuml participant User note right of User: <img:./assets/user_tag.png>\n普通用户 User -> AuthService: 提交登录请求 note over AuthService: <img:./assets/auth_logic.png>\n权限校验逻辑 AuthService --> User: 返回登录凭证 @enduml作为独立悬浮元素放置
如果需要把图片放在图内任意位置(比如放图例、补充说明图),可以用浮动块承载:@startuml User -> OrderService: 提交订单 float right: <img:./assets/order_legend.png> 状态图例 @enduml
常见语法错误规避
不要把Creole富文本标签(图片、加粗、列表等)放在以下结构定义区域:
- 参与者定义的
as别名前后 - 箭头的
->/-->标记和:消息起始标记之间,包括你之前尝试的;序号分隔符附近 - 条件块、循环块的语法关键字行内
内容的提问来源于stack exchange,提问作者user3555809
相关产品推荐
相关产品推荐

