javascript에서 html dom 요소를 png로 내보내기

소개



나는 최근에 프로젝트를 만들기 위해 이 질문에 답하려고 노력했습니다. 그러나 명확한 답을 찾지 못했습니다. 여기 있습니다:

import domtoimage from "dom-to-image";

const scale = 5;

//...

function exportAsPNG() {
    domtoimage
      .toBlob(element, {
        //Changing the resolution by a factor (scale)
        //Else this setup might cause blurry images
        width: element.clientWidth * scale,
        height: element.clientHeight * scale,
        style: {
          transform: `scale(${scale})`,
          transformOrigin: "top left",
        },
      })
      .then(blob => {
        saveAs(blob, "image.png");
      });
  }

  function saveAs(blob, fileName) {
    let url = window.URL.createObjectURL(blob);
    let a = document.createElement("a");
    a.href = url;
    a.download = fileName;
    document.body.appendChild(a);
    a.click();
    window.URL.revokeObjectURL(url);
    a.remove();
  }



연습



이 스니펫에 대해 정말 흥미로운 점은 스케일링 부분입니다. 다른 라이브러리를 사용하면 이미지가 흐릿하게 엉망이 되기 때문입니다.

나를 위해 5의 배율 인수가 잘 작동했습니다. 그러나 그것은 분명히 미세 조정을 위한 매개 변수입니다.
saveAs 함수는 관심이 없습니다. 단지 앵커 태그를 생성하고 URL을 만지작거리며 클릭합니다.

메모


  • 기능으로 Jpeg 내보내기도 가능합니다domtoimage.toJpeg(args).
  • svg 내보내기의 경우 domtoimage.toSvg(args)

  • 연결


  • https://www.npmjs.com/package/dom-to-image
  • https://github.com/tsayen/dom-to-image
  • 좋은 웹페이지 즐겨찾기