跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScript大前端

Canvas 绘制文本并转换为 Base64 图片的实战方法

HTML5 Canvas API 允许开发者直接在浏览器端将文本渲染为图像数据。通过配置 Canvas 上下文属性设置背景色与字体样式,利用 textAlign 和 textBaseline 实现文本垂直水平居中绘制,最后调用 toDataURL 方法将画布内容转换为 Base64 编码字符串。该方法适用于无需上传文件即可传输图形内容的场景,如生成验证码、动态图标或减少网络请求等前端开发需求。

佛系玩家发布于 2019/9/4更新于 2026/6/617 浏览
Canvas 绘制文本并转换为 Base64 图片的实战方法

Canvas 绘制文本并转换为 Base64 图片的实战方法

在实际开发中,有时候我们需要把一段文字直接变成图片格式,比如生成动态验证码或者避免加载外部字体资源。这时候 HTML5 的 Canvas 就派上用场了。它不仅能画图,还能把画好的内容直接导出成 Base64 字符串。

下面是一个完整的流程,重点在于如何让文字在画布上完美居中,以及如何安全地转换格式。

准备工作

首先确保页面上有一个 <canvas> 元素,并获取它的引用。设定好画布的宽高,这决定了最终图片的尺寸。

let width = 160;
let height = 90;
let x = 0;
let y = 0;
let font = '要绘制的文本';
let fontSize = 32;
let canvas = document.getElementById("canvas");
canvas.width = width;
canvas.height = height;
const ctx = canvas.getContext("2d");

绘制核心逻辑

拿到上下文后,先填充背景色,防止透明区域影响后续处理。接着是关键的文字对齐设置。很多人容易忽略 textAlign 和 textBaseline,如果不设这两个,文字默认是从左上角开始绘制的,很难控制位置。

ctx.fillStyle = "#FFFFFF";
ctx.fillRect(x, y, width, height);

ctx.fillStyle = "#000000";
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
ctx.font = fontSize + 'px sans-serif';

这里要注意,textAlign 设为 center 后,x 坐标就是文字的中间点;同理 textBaseline 设为 middle,y 坐标对应文字的中心线。这样配合 fillText 就能轻松实现垂直水平双居中。

ctx.(font, width / , height / );
fillText
2
2

导出 Base64

画完图之后,不需要保存图片到服务器,直接用 toDataURL 就能拿到数据。这个方法会返回一个包含 MIME 类型和 Base64 数据的长字符串,可以直接赋值给 img 标签的 src,或者发给后端。

let base64Data = canvas.toDataURL('image/png');
console.log(base64Data);

以上就是整个流程。实际使用时记得根据业务需求调整字体大小和颜色,如果遇到中文乱码,通常是因为字体文件未加载或 Canvas 不支持该字体,建议优先使用系统自带字体。

目录

  1. Canvas 绘制文本并转换为 Base64 图片的实战方法
  2. 准备工作
  3. 绘制核心逻辑
  4. 导出 Base64
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Rust 异步微服务架构的最佳实践与常见反模式
  • C++ 模拟实现二叉搜索树
  • Git 跨平台下载与安装指南
  • MySQL 数据库数据类型选型避坑指南
  • C++ 继承机制核心解析
  • OpenClaw Java:基于 Spring Boot 的 AI Agent Gateway 全栈实践
  • 2024-2025 主流开源 TTS 模型选型与实战对比
  • OpenClaw Skills 安装与实战指南
  • 腾讯混元图像 3.0 图生图开源,LMArena 跻身全球第一梯队
  • Llama-Factory 微调中 Batch Size 的设置与性能调优
  • 本地搭建带知识库的 AI 助手:Ollama + Open WebUI 实战
  • Redis 数据结构 Set 实战:过滤用户注册重复提交信息
  • HTTP 请求方式详解:GET、POST 及其他方法
  • GitHub Copilot 学生认证流程详解(2026 更新)
  • LLM、GPT、AIGC、AI Agent、Agentic AI 技术解析
  • GitHub Copilot 提示词工程实战指南:从基础到精通
  • C++ set 与 map 容器使用详解
  • NIC400 微架构生成流程详解
  • SonicMoE 论文笔记:稀疏混合专家模型硬件感知优化
  • Ubuntu 部署 OpenClaw 智能体框架实战指南

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online