[JavaScript] 자바스크립트에서 캔버스 그래픽 다운로드하기
2022. 7. 28. 18:27ㆍProgram/JavaScript
211_자바스크립트에서 캔버스 그래픽 다운로드하기
[적용]
- 브라우저에서 생성한 도형을 유저의 시스템에 다운로드하고 싶을 때
- 브라우저에서 가공한 이미지를 유저의 시스템에 다운로드하고 싶을 때
[문법]
메소드 | 의미 | 반환 |
new Blob(배열, 옵션) | Blob 객체 생성 | Blob 객체 |
[내용]
a 요소를 사용해 캔버스 요소에서 작업한 그래픽을 다운로드 할 수 있다.
이미지 데이터는 toDataURL()을 사용해 Base64 문자열로 가져오며,
바이너리이므로 Blob 객체로 변환한다.
JavaScript (부분) main.js
// 캔버스 요소 참조
const canvas2 = document.querySelector('#cnavas-effected');
// 파일 형식과 파일명 지정
const mimeType = 'image/png';
const fileName = 'download.png';
// Base64 문자열 가져오기
const base64 = canvas2.toDataURL(mimeType);
// Base64 문자열을 Unit8Array로 변환
const bin = atob(base64.replace(/^.*,/, ''));
const buffer = new Unit8Array(bin.length);
for (let i = 0; i < bin.length; i++) {
buffer[i] = bin.charCodeAt(i);
}
// Blob 생성
const blob = new Blob([buffer.buffer], {
type: mimeType
});
// 이미지 다운로드
if (window.navigator.msSaveBlob) {
// IE용
window.navigator.msSaveBlob(blob, fileName);
} else if (window.URL && window.URL.createObjectURL) {
// 파이어폭스, 크롬, 사파리용
const a = document.createElement('a');
a.download = fileName;
a.href = window.URL.createObjectURL(blob);
document.body.removeChild(a);
} else {
// 기타
window.open(base64, '_blank');
}
참조 :
실무에 바로 적용하는 자바스크립트 코드레시피 278
아케다 야스노부, 카노 타케시 지음 / 이춘혁 옮김
'Program > JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트에서 지정 시간 후 작업 실행 해제하기 (0) | 2022.07.29 |
---|---|
[JavaScript] 자바스크립트에서 지정 시간 후 작업 실행하기 (0) | 2022.07.28 |
[JavaScript] 자바스크립트에서 PNG/JPEG DataURL로 불러오기 (0) | 2022.07.28 |
[JavaScript] 자바스크립트에서 DataURL로 캔버스에 이미지 표시하기 (0) | 2022.07.27 |
[JavaScript] 자바스크립트에서 캔버스의 이미지 가공하기 (0) | 2022.07.27 |