image

Next.js Image blurDataURL

태그
Next.js
상세설명Next.js Image blurDataURL 적용 방법
작성일자2023.10.19

next/image 에서 제공하는 property인 placeholder=’blur’와 blurDataURL={ … } 을 사용한다면, 빈 화면이 뜨는 동안 블러처리 된 이미지가 화면에 보이게 이미지가 렌더링 될 때까지 효율적으로 제어할 수 있습니다. ux적으로도 사용자에게 이미지가 로딩 중임을 알려주고, 원본 이미지를 추측할 수 있도록 도와준다.

정적으로 이미지를 불러오는 상황

// placeholder='blur' 만 추가해도 자동으로 채워준다
import Image from 'next/image'
 
export default function Page() {
  return (
    <Image
      src="/profile.png"
      width={500}
      height={500}
      alt="profileImg"
			placeholder="blur" 
    />
  )
}

동적으로 이미지를 불러오는 상황

blurDataURL 를 추가적으로 더하면 되는데 blurImg 는 base64로 인코딩되서 ASCII 문자열로만 이루어진 이미지 데이터가 들어가야 된다.

const base64 = 'data:image/jpeg;base64,'
const blurImg = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mO88B8AAqUB0Y/H4mkAAAAASUVORK5CYII='

<Image
  src={img.url}
  alt="image"
  width={300}
  height={300}           
  placeholder='blur'               
  blurDataURL={base64 + blurImg} 
/>

base64로 인코딩된 이미지 픽셀 만들어주는 사이트

동적 이미지 placeholder, blurDataURL 적용 여부 비교

placeholder X , blurDataURL X

placeholder O, blurDataURL O