为什么 HTML5 Canvas 下载空白图像(以及如何修复)

发布: (2026年1月20日 GMT+8 18:42)
2 分钟阅读
原文: Dev.to

Source: Dev.to

有效的情况

  • 变体文字在屏幕上可见。
  • Canvas 元素存在且显示正确的尺寸。
  • 下载功能被正确触发。

起作用的情况

  • canvas.toDataURL() 返回一张空白的白色图像。
  • 绘制在 canvas 上的文字未出现在下载的图像中。

可能的原因

  • Web 字体在绘制文字之前未完全加载。
  • Canvas 内容是通过 CSS 变换(旋转/缩放)绘制的。
  • 绘制发生在与下载的 canvas 不同的 canvas 上。
  • Canvas 的宽高不匹配。

简化代码

const canvas = document.getElementById("ambigramCanvas");
const ctx = canvas.getContext("2d");

ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.font = "40px AmbigramFont";
ctx.textAlign = "center";
ctx.fillStyle = "#000";
ctx.fillText("TEST", canvas.width / 2, canvas.height / 2);

function downloadCanvas() {
  const link = document.createElement("a");
  link.download = "ambigram.png";
  link.href = canvas.toDataURL("image/png");
  link.click();
}

问题

正确的做法是什么,以确保:

  • 生成的变体文字真正绘制到 canvas 中。
  • 在导出之前 Web 字体已完全加载。
  • 下载的 canvas 图像与视觉上显示的内容一致?

任何指导或最佳实践都将不胜感激。

Related site: ambigramtools.com

Back to Blog

相关文章

阅读更多 »

智能学习规划器

项目 Smart Study Planner 我正在构建的内容 一个简单的计划工具,帮助学生制定学习时间表、跟踪科目,并轻松复习。 今天完成了 ma...