html 라이브러리를 통해
이미지 저장하기 기능입니다.
html2canvas
- html을 canvas로 변환하여 캡처된 화면을 이미지 저장해주는 라이브러리 입니다.
https://www.npmjs.com/package/html2canvas
html2canvas 적용 코드
import html2canvas from 'html2canvas';
...
const onSaveToImg = () => { //클릭 이벤트
const capture = document.querySelector('#capture') //이미지 저장 영역
html2canvas(capture).then(
canvas => {
saveAs(canvas.toDataURL('image/jpg'), '이미지.jpg')
}
)
}
const saveAs = (uri, filename) => {
let link = document.createElement('a')
if (typeof link.download === 'string') {
link.href = uri;
link.download = filename;
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
} else {
window.open(uri)
}
}
html2canvas 문제점
- 한가지 문제점은 화면상의 캡쳐 이미지이므로 스크롤이 들어간 넓은 영역의 경우 화면이 잘리게 됩니다.
- 이를 위해서 css 로 영역을 넓혀줍니다.
수정코드
const onSaveToImg = () => {
const capture = document.querySelector('#capture')
capture.style.width = '1000px' //너비 영역 증가
capture.style.paddingBottom = '20px'
html2canvas(capture).then(
canvas => {
saveAs(canvas.toDataURL('image/jpg'), '식단표.jpg')
}
)
capture.style.width = 'auto' //원점으로
}
반응형
'개발 > Javascript' 카테고리의 다른 글
[js] 자바스크립트 함수 선언과 함수 호출 (0) | 2022.04.08 |
---|---|
[js] onclick 이벤트 링크 넣기 (0) | 2022.04.05 |
[js] 단어 filtering 다중 단어 filtering (ft. includes, some) (0) | 2022.02.17 |
[js] 반응형 이미지 맵 구현 (ft. image-map 라이브러리) (0) | 2022.02.15 |
[js] 두가지 배열 합치기, 중복되는 요소 찾기 (0) | 2022.01.24 |
댓글