SeonHyungJo / Tip-Note

:round_pushpin: 개발을 하면서 느끼고 알게된 Tip:round_pushpin:
7 stars 0 forks source link

이미지 미리보기 (createObjectURL vs FileReader) #66

Open SeonHyungJo opened 4 years ago

SeonHyungJo commented 4 years ago

웹에서 많이 사용되는 기능으로 이미지 미리보기가 있다.

이미지 미리보기를 구현하는 방법은 크게 2가지로 나눌 수 있다.

URL.createObjectURL, URL.revokeObjectURL

inputElement.addEventListener('change', (e) => {
  imgElement.src = URL.createObjectURL(e.target.files[0]);
});

URL.revokeObjectURL(imgElement.src)

FileReader.readAsDataURL

function previewFile() {
  const preview = document.querySelector('img');
  const file = document.querySelector('input[type=file]').files[0];
  const reader = new FileReader();

  reader.addEventListener("load", function () {
    preview.src = reader.result;
  }, false);

  if (file) {
    reader.readAsDataURL(file);
  }
}

비교한 글 살펴보기

1) time

2) memory usage

3) support

createObjectURL from IE 10 and all modern browsers FileReader.readAsDataURL from IE 10 and all modern browsers

결론적으로 BLOB 방식의 createObjectURL가 더욱 빠르며 많은 이미지를 보여주어야하는 경우 메모리 해제를 해주어야 한다.

Reference