성장과정(dev)/Typescript ⊃Javascript

이미지 파일 사이즈 리사이징

lowellSunny 2022. 5. 9. 13:58

이미지를 리사이징하기 위해 base64로 이미지를 변환한다.

여기서 이미지 변환 quality 에 대하여 브라우저 의존적이며, 크롬이나 파이어폭스에서의 default 값은 0.92이다.
(0~1 사이로 정의해야하며 낮으면 그만큼 low quality image로 변환된다.

canvas.toDataURL(`image/jpeg`, /* default quality */)

 

이미지 용량 줄이기

let base64 = e.target.result;
/** 용량 줄이기 */
const image = new Image();
image.src = base64;

image.onload = (event) => {

  const $canvas = document.createElement(`canvas`);
  const ctx = $canvas.getContext(`2d`);

  $canvas.width = event.target.width;
  $canvas.height = event.target.height;

  ctx.drawImage(event.target, 0, 0);

  // 용량이 줄어든 base64 이미지

  let original = $canvas.toDataURL(`image/jpeg`);
  let size = this.getImageSize( original );
  let quality = size > 500000 ? 0.98: 1.0;

  vueObj.idImageBase64 = $canvas.toDataURL(`image/jpeg`, quality );
  console.log( "quality " + quality + " file size ::", this.getImageSize( vueObj.idImageBase64 ) );
}

image.remove();