代码截图生成器
图像所有处理都在浏览器本地完成,数据不上传服务器
把一段代码渲染成一张好看的 PNG:按所选语言语法着色,可选深色、浅色或高对比主题,带行号、内边距与圆角,还能加一条带红黄绿圆点的窗口标题栏。 着色复用站内的代码高亮器。 语言与该上色的词只有一份实现(`lib/highlight.ts`),所以同一种代码在这里与「代码高亮」工具里着色一致 —— 不会两处各维护一套关键词表、慢慢分叉。 等宽字体与中文宽度。 字体用 `ui-monospace, SFMono-Regular, Menlo, monospace` 这一串,跳到系统上真正存在的等宽字体。宽度是逐字符量的:一个汉字占两个西文字位,整串一次量在与中文注释混排时会错位,所以每一段的推进都按字符累加。 代码栏是单行输入框。 这是本站图像外壳的控件形态(它给的是标准表单控件),所以一次渲染一行;粘贴时换行会被浏览器去掉。适合渲染一行、一个表达式或一小段压缩后的代码。
功能
- 语法着色:JavaScript、TypeScript、Python、Go、Rust、SQL、Bash、JSON 与纯文本
- 着色复用站内高亮器,与「代码高亮」工具规则一致
- 三套主题:深色、浅色、高对比
- 可显示行号,字号、内边距、圆角都可调
- 可加窗口标题栏(带红黄绿圆点与自定义标题)
- 等宽字体按字符逐个量宽,中文注释不会错位
- 输出 PNG,卡片给出尺寸与体积
- 全部在浏览器里渲染,代码不上传
使用方法
- 把要渲染的代码填进「代码」栏
- 选语言与主题,调字号、行号、内边距与圆角
- 需要时打开窗口标题栏并填标题
- 点下载保存 PNG
常见问题
- 支持多行代码吗?
- 渲染器本身支持多行(行号、行高都是按行算的),但代码栏目前是单行输入框 —— 这是本站图像工具外壳的控件形态,标准的单行文本控件会在粘贴时把换行去掉,所以实际一次只能放一行。适合渲染一行代码、一个表达式或一小段压缩后的代码。需要整段多行代码的截图时,可以先用别的工具渲染,或把这一行拆成多次。
- 着色规则和「代码高亮」工具是一样的吗?
- 是同一份。着色复用了站内的 `lib/highlight.ts`:语言表、关键词表、每一段该归到哪一类,都只有一份实现。这里额外做的只是把分类结果画到 canvas 上(canvas 没有 innerHTML,不能直接画 HTML),类名到颜色的映射是画图才需要的东西。所以你在这里看到的颜色分布与「代码高亮」工具一致,不会两处各维护一套规则。
- 为什么宽度要按字符逐个量?
- 因为等宽字体里汉字占两格。如果整行一次量出来,字体引擎对中英混排的合成宽度在某些字体下会与「西文半宽、汉字全宽」的实际占位差几个像素,行号列与代码就会错位。逐字符量出的宽度是可预期、可断言的,于是中文注释与代码也能对齐。
- 能做成透明的背景吗?
- 当前输出的是实底(深色、浅色或高对比主题各自的底色)。圆角之外的四角是透明的,所以贴到深色或浅色背景上时圆角不会露出白边。需要别的背景色时,选一个最接近的主题,或下载后用图像工具替换背景色。
相关工具
代码着色
网络把代码染上语法颜色,选中复制即可带颜色贴进 PPT 与 Word;也可以输出内联样式的 HTML 源码,直接放进博客或邮件。支持 26 种语言。
图片转 Base64
网络图片转 Base64 与 Data URL:拖拽、选择或粘贴截图,可按最长边缩放、转成 PNG/JPEG/WebP 并调质量。图片只在浏览器本地处理,绝不上传。
图片信息
图像读出一张图的所有信息:格式细节、拍摄参数与拍摄地点。EXIF 与拍摄位置单独列出并提醒,可导出文本或 JSON。图片不上传。
图片格式转换
图像把图片在 PNG、JPEG、WebP、AVIF、BMP、TIFF 之间互转,质量与尺寸上限可调。PNG 转 JPEG 时先铺背景色,透明区域不会变成黑色。全部在浏览器本地完成。
九宫格切图
图像把一张图按网格切开,用于朋友圈九宫格、长图分页。可选 3×3 等六种网格、每格留白与底色,输出按序号命名便于依次发布。
图片加水印
图像给图片加文字水印:九个位置加平铺,字号按图片比例自动缩放,可调颜色与不透明度。平铺加倾斜是防裁剪的常用做法。全部本地完成。