HTML5 Canvas가 빈 이미지를 다운로드하는 이유 (그리고 해결 방법)

발행: (2026년 1월 20일 오후 07:42 GMT+9)
2 min read
원문: Dev.to

Source: Dev.to

작동하는 부분

  • 스크린에 앰비그램 텍스트가 보입니다.
  • 캔버스 요소가 존재하고 올바른 크기를 표시합니다.
  • 다운로드 기능이 올바르게 트리거됩니다.

작동하지 않는 부분

  • canvas.toDataURL()가 빈 흰색 이미지를 반환합니다.
  • 캔버스에 그린 텍스트가 다운로드된 이미지에 나타나지 않습니다.

가능한 원인

  • 텍스트를 그리기 전에 웹 폰트가 완전히 로드되지 않음.
  • 캔버스 내용이 CSS 변형(회전/스케일)으로 그려짐.
  • 그리기가 다운로드되는 캔버스와 다른 캔버스에서 이루어짐.
  • 캔버스 너비/높이 불일치.

간소화된 코드

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();
}

질문

다음 사항을 보장하는 올바른 방법은 무엇인가요:

  • 생성된 앰비그램 텍스트가 실제로 캔버스에 그려지는지.
  • 웹 폰트가 내보내기 전에 완전히 로드되는지.
  • 다운로드된 캔버스 이미지가 화면에 표시되는 것과 일치하는지?

조언이나 모범 사례가 있으면 감사하겠습니다.

Related site: ambigramtools.com

Back to Blog

관련 글

더 보기 »

🎮 레트로 행맨 '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

기사 URL: https://walters.app/blog/bootstrapping-bun 댓글 URL: https://news.ycombinator.com/item?id=46681309 점수: 3 댓글: 0