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

发布: (2026年1月20日 GMT+8 18:42)
2 min read
原文: 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

相关文章

阅读更多 »

🎮 Retro Hangman '95 使用 KIRO

封面图片:🎮 Retro Hangman '95 使用 KIRO https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-t...

引导 Bun

请提供您希望翻译的文章摘录或摘要文本,我才能为您进行翻译。