尧图精选

Carbon 源码图片生成指南:导入、定制、导出与嵌入的完整实战

🕒 发布时间:2026/9/19 12:13:59 📁 来源:尧图网络
Carbon 源码图片生成指南导入、定制、导出与嵌入的完整实战【免费下载链接】carbon:black_heart: Create and share beautiful images of your source code项目地址: https://gitcode.com/gh_mirrors/ca/carbonCarbon 是一个面向开发者的开源 Web 应用目标是把源代码渲染成适合在 Twitter、Slack、博客和文档中分享的精美图片当前仓库即为其完整实现。本文以 孟加拉语版官方说明 为主线结合仓库源码Next.js 前端 服务端 API系统讲解从代码导入、样式定制、导出下载、链接分享到站点嵌入、PWA 离线安装的完整流程并给出 URL 参数、快捷键等可直接落地的细节帮助你把 Carbon 用成日常的代码分享利器。Carbon 是什么从代码到分享图的完整工作流Carbon 的出发点非常朴素Twitter 上常见开发者晒出的代码截图——代码本身很有价值但截图的美观度往往差强人意。Carbon 将代码 → 图片的过程产品化让你可以在浏览器中把代码放进编辑器调整语法高亮主题、字体、背景、窗口样式等一键导出 PNG/SVG 图片或生成一个可分享、可嵌入的链接。整个应用以 React Next.js 构建入口页面见 pages/index.js挂载时注册 Workbox Service Worker核心渲染逻辑由 components/EditorContainer.js 与 components/Carbon.js 承担前端直接基于 CodeMirror 完成语法高亮与图片化输出无需任何后端参与即可生成图片。从仓库的 package.json 与 next.config.js 可以看出这是一个标准的 Next.js 应用构建与部署依赖 yarn 与 Vercel你完全可以yarn install yarn dev在本地跑起来自行体验。核心特性一览孟加拉语 README 将 Carbon 的核心能力概括为三点恰好对应仓库中三个清晰的功能模块定制化Customization可以自由修改图片的语法高亮主题、字体风格等。底层由 lib/constants.js 中FONTS、THEMES、LANGUAGES、DEFAULT_SETTINGS等一系列配置常量支撑详见下文自定义你的代码图片一节。快速分享Share quickly一键保存图片或生成链接。导出菜单实现位于 components/ExportMenu.js复制菜单位于 components/CopyMenu.js。保存代码片段Save snippets注册账号后可把代码片段保存在云端之后随时通过链接访问、继续编辑分享出去的片段在 Twitter、Slack 上会自动展开unfurl成图片。后端能力由 lib/api.js 封装走/api/snippets接口。将代码导入 Carbon三种方式官方文档明确给出了三种把代码放进编辑器的途径仓库代码也逐一印证拖放文件到编辑器把本地源文件直接拖入编辑区域文件内容即被读取填充在 URL 中附加 GitHub gist ID访问形如carbon.now.sh/gist_id的地址页面会自动拉取该 gist 的代码。从 lib/routing.js 的getRouteState实现可见路径中长度不小于 19 且不含点号的段会被识别为 snippet/gist 参数pages/embed/[id].js中同样复用了这一判断逻辑判定后通过api.snippet.get拉取数据直接在编辑器中输入打开页面默认已填充一段示例代码见 lib/constants.js 中的DEFAULT_CODE清空后开始打字即可。自定义你的代码图片代码进入编辑器后即可对图片外观进行全方位定制。官方文档点名的可定制项包括语法主题syntax theme、背景颜色background color、窗口主题window theme、内边距padding、阴影shadow、字体font。它们全部落在 lib/constants.js 的DEFAULT_SETTINGS中默认值如下{ paddingVertical: 56px, // 垂直内边距 paddingHorizontal: 56px, // 水平内边距 backgroundMode: color, // 背景模式纯色或图片 backgroundColor: rgba(171, 184, 195, 1), // 默认背景色 dropShadow: true, // 是否带投影 dropShadowOffsetY: 20px, // 投影纵向偏移 dropShadowBlurRadius: 68px,// 投影模糊半径 theme: seti, // 默认语法主题 windowTheme: none, // 窗口主题macOS 风格窗口 fontFamily: Hack, // 默认等宽字体 fontSize: 14px, lineHeight: 133%, windowControls: true, // 是否显示窗口红绿灯按钮 widthAdjustment: true, // 是否自适应宽度 lineNumbers: false, // 是否显示行号 exportSize: 2x, // 导出倍率 watermark: false, // 是否带水印 width: 680, // 图片宽度 }主题、字体与语言的选择范围语法主题THEMES数组内置了 30 个主题包括 Seti、Dracula、Monokai、Night Owl、Nord、One Dark、One Light、Solarized、SynthWave 84、Verminal、VSCode 等并附有每个主题的完整高亮色值表背景、文本、关键字、字符串、注释等 token 颜色其中如a11y-dark、one-light、yeti等亮色主题已标记light: true用于适配亮色背景。仓库同时内置了这些主题的 CSS见 public/static/themes/ 下的*.min.css。字体FONTS提供 13 款等宽字体包括 Hack、Fira Code、JetBrains Mono、Cascadia Code、Source Code Pro、IBM Plex Mono、Anonymous Pro 等覆盖主流开发者的偏好。编程语言LANGUAGES内置 90 种语言模式Auto 自动检测 具体语言包含 Apache、Elixir、GraphQL、Nim、RISC-V、Solidity 等由仓库自定义实现的模式见 lib/custom/modes/并映射了对应的 MIME 类型供高亮与导出使用。用 URL 参数直接控制样式除界面操作外Carbon 的定制能力还能通过 URL 查询参数直接传递这非常利于分享一个特定样式的链接。参数映射表定义在 lib/routing.js 的readMappings/writeMappings中核心缩写参数如下缩写参数对应配置项含义类型bgbackgroundColor背景颜色字符串ttheme语法主题字符串wtwindowTheme窗口主题字符串llanguage语言字符串dsdropShadow是否投影布尔dsyoff/dsblurdropShadowOffsetY/dropShadowBlurRadius投影偏移 / 模糊字符串wcwindowControls是否显示窗口控制按钮布尔wawidthAdjustment宽度自适应布尔pv/phpaddingVertical/paddingHorizontal垂直 / 水平内边距字符串lnlineNumbers行号显示布尔flfirstLineNumber起始行号整数fmfontFamily字体字符串fsfontSize字号字符串lhlineHeight行高字符串sisquaredImage方形图片布尔esexportSize导出倍率1x/2x/4x字符串wmwatermark水印布尔slselectedLines高亮选中行整数数组code/tbcode/titleBar代码内容 / 标题栏文本URL 编码字符串例如?tmonokaifmFira%20Codebgrgba(39,40,34,1)lntrue即可生成一个Monokai 主题 Fira Code 字体 深色背景 显示行号的定制链接。除此之外state参数支持把完整配置序列化为 base64 状态串再分享对应serializeState/deserializeState实现。图片说明以下为 Carbon 内置的预设Preset风格缩略图之一可直观感受主题 背景色 字体 窗口样式组合定制出的不同成品效果。预设定义见 lib/constants.js 中的DEFAULT_PRESETS缩略图位于 public/static/presets/。导出与分享四种方式自定义完成后就可以通过各种渠道把代码片段分享出去。官方文档给出了四种方式以下结合源码逐一展开。1. 创建并分享已保存的 Snippet分享一个已保存的片段图片会在 Twitter、Slack 等平台自动展开unfurl成预览图读者既能直接看到成品图也能顺着链接查看原始源码如果后续想修改打开链接即可直接编辑。步骤很简单点击 Sign in/Sign up 按钮登录Firebase 认证见 lib/client.js像平时一样编辑——你的片段会被自动保存lib/api.js 中updateSnippet做了 1 秒防抖createSnippet则按 5 秒防抖批量创建避免频繁请求复制浏览器地址栏的 URL 分享出去。登录后pages/snippets.js 与 pages/account.js 提供了片段列表管理与账号能力。2. 将片段嵌入自己的网站或博客这是官方文档推荐的在自己的网站/博客上展示 Carbon的方式读者甚至可以在嵌入页里一键复制代码。任意片段嵌入直接使用carbon.now.sh/embed地址即可嵌入任意 Carbon 片段已保存片段或 gist 嵌入使用carbon.now.sh/embed/:id。对应服务端逻辑见 pages/embed/[id].js路径参数通过api.snippet.get拉取片段数据并作为 props 传入若找不到则 302 跳回/embed。复制粘贴最快在 Carbon 编辑器中打开 Copy Menu可以一键复制三种内容components/CopyMenu.jsIFrame生成带sandboxallow-scripts allow-same-origin的iframe标签宽高取自当前 Carbon 画布的实际尺寸Medium.com生成 URL 编码后的嵌入链接代码中特别处理了*号避免 Medium 平台解析异常Plain URL普通链接。嵌入页本身pages/embed/index.js是一个只读模式readOnly: true的 Carbon 画布通过postMessage向父窗口上报自身高度context: iframe.resize让 iframe 能自动适配内容高度同时支持?copyfalse、?readonlyfalse等查询参数来控制是否可复制、是否只读并把代码变更通过postMessage回传父页面。3. 使用 Tweet 按钮一键把图片发到 Twitter并且自动带上正确的alt文本保证图片对使用屏幕阅读器的用户同样可访问官方文档建议若你选择手动发图也应参照平台的无障碍图片描述规范处理。底层实现在 lib/api.js 的tweet()中图片数据先 POST 到/api/twitter换取临时 URL再拼接成https://twitter.com/intent/tweet?textCreated with carbon_app ...的新窗口打开若触发了平台的 420 限流也会给出友好提示。4. 直接下载图片Carbon 支持将成品导出为PNG 和 SVG两种格式下载入口在 components/ExportMenu.jsPNG / SVG 下载点击Export下拉菜单中的 Download 下的 PNG 或 SVG 按钮Export → Open在浏览器新标签页中直接打开生成的图片Copy → Image直接把图片复制到系统剪贴板需浏览器支持navigator.clipboard与ClipboardItemAPI见 components/CopyMenu.js 中的能力检测。导出面板还允许自定义文件名和导出倍率EXPORT_SIZES提供 1x / 2x / 4x 三档对应 lib/constants.js。此外components/ExportMenu.js 注册了两组非常实用的快捷键⌘ ⇧ ECtrlShiftE快速导出 PNG⌘ ⇧ SCtrlShiftS快速导出 SVG。复制图片对应的快捷键是⌘ ⇧ CCtrlShiftC。将 Carbon 安装为桌面应用离线使用官方文档说明如果使用 Google Chrome 或其他支持 PWA渐进式 Web 应用的浏览器可以把 Carbon 安装为桌面应用离线使用访问carbon.now.sh打开浏览器设置菜单点击 Install Carbon...。仓库侧对应实现了完整的 PWA 能力入口页在 pages/index.js 挂载时注册 Workbox Service Worker卸载页面时注销public/manifest.json 提供了应用清单public/static/brand/ 提供各尺寸应用图标满足安装为独立桌面窗口所需的条件。社区生态把 Carbon 接到你的工作流官方文档记录了社区围绕 Carbon 构建的丰富工具链覆盖面从编辑器到聊天工具编辑器插件IntelliJ IDEA右键菜单直接打开选区、Atomshift-cmd-A、VS Codecarbon命令、Sublime Text 3自定义快捷键、Vim/NeovimCarbonNowSh()函数、Emacscarbon-now-sh交互函数、Xcode选区一键导出另有nef插件支持。命令行与自动化工具carbon-now-cli支持交互模式、选择性高亮可直接打开文件或下载图片nef可从 Xcode Playground 批量导出多个 Carbon 片段R 语言用户可使用carbonate迭代调整图片美学参数。聊天与社区工具Telegram 机器人carbonshbot接收代码片段或 gist URL 直接生成 Carbon 图Carbon for Slack通过/carbon命令在 Slack 内直接使用 Carbon。总结通过本文可以看到Carbon 的价值在于把代码截图这件高频小事做到了极致输入方式上支持拖拽文件、gist URL、直接输入三种途径定制能力上内置 30 主题、13 款字体、90 语言模式以及一整套 URL 参数化配置分享出口上覆盖下载 PNG/SVG、保存片段、复制嵌入代码、一键 Tweet 和 PWA 离线安装。这些能力与仓库源码一一对应lib/constants.js、lib/routing.js、lib/api.js、components/ExportMenu.js、components/CopyMenu.js、pages/embed/无论是日常使用还是二次开发都能从这份代码中获得完整参考。【免费下载链接】carbon:black_heart: Create and share beautiful images of your source code项目地址: https://gitcode.com/gh_mirrors/ca/carbon创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →