프론트엔드/Next.js
[Next.js] 이미지 최적화, <Image/> 사용 방법
순코딩
2025. 1. 4. 07:35
Next.js Image 태그란? 장점과 모든 속성 정리
웹사이트를 개발할 때 이미지는 중요한 요소입니다. Next.js는 이러한 이미지를 효율적으로 관리하기 위해 <Image /> 컴포넌트를 제공합니다. 이 컴포넌트는 이미지 최적화, 반응형 디자인, 성능 향상을 자동으로 처리하여 개발자와 사용자 모두에게 이점을 제공합니다. 이번 포스팅에서는 Next.js의 <Image /> 태그란 무엇인지, 장점, 그리고 사용 가능한 모든 속성과 속성값을 정리해 보겠습니다.
1. Image 태그란?
Next.js의 <Image /> 컴포넌트는 이미지를 서버와 클라이언트에서 최적화하여 빠르고 효율적으로 렌더링할 수 있게 돕는 컴포넌트입니다. 일반 HTML의 <img> 태그를 확장한 것으로, 다음과 같은 기능을 제공합니다:
- 자동 이미지 최적화: 이미지를 사용자가 보이는 크기로 자동으로 조정하고, 포맷(WebP 등)을 최적화합니다.
- 반응형 디자인 지원: 다양한 화면 크기에 맞춰 이미지를 자동으로 조정합니다.
- 레이아웃 관리: 레이아웃 옵션(intrinsic, responsive, fill 등)을 통해 다양한 배치 방식으로 이미지를 사용할 수 있습니다.
2. Image 태그의 장점
- 이미지 최적화 자동화
- Next.js는 이미지 크기를 자동으로 조정하고 최적화합니다.
- WebP 포맷과 같은 효율적인 파일 형식을 활용하여 로딩 시간을 단축합니다.
- 반응형 이미지 제공
- 다양한 디바이스(모바일, 태블릿, 데스크톱)에서 최적의 해상도로 이미지를 제공합니다.
- layout 속성을 활용하여 유연한 레이아웃을 구현할 수 있습니다.
- Lazy Loading 기본 지원
- 화면에 나타나기 전까지 이미지를 로드하지 않아 성능과 사용자 경험을 개선합니다.
- SEO 및 접근성 향상
- alt 속성을 사용해 검색엔진 최적화(SEO)를 돕고, 스크린 리더 사용자를 위한 접근성을 제공합니다.
- 외부 및 정적 이미지 지원
- 외부 이미지(CDN 등)나 프로젝트의 public 디렉토리에서 이미지를 손쉽게 사용할 수 있습니다.
3. Image 태그의 모든 속성과 속성값
다음은 Next.js의 <Image /> 컴포넌트에서 사용할 수 있는 모든 속성과 설명입니다.
- 필수 속성
- src: 이미지 URL 또는 경로를 지정합니다. (필수)
- alt: 이미지의 대체 텍스트로, 접근성을 위해 반드시 포함해야 합니다. (필수)
- 크기 및 레이아웃 관련 속성
- width, height: 이미지의 너비와 높이를 픽셀 단위로 지정합니다.
- layout: 이미지 레이아웃 방식을 설정합니다. intrinsic, responsive, fill, fixed 중 선택할 수 있습니다.
- objectFit: layout="fill"일 때, 이미지를 컨테이너 안에서 어떻게 맞출지를 설정합니다. (cover, contain, fill, none, scale-down)
- objectPosition: 이미지 배치 위치를 지정합니다. 예: center, top, left.
- 최적화 관련 속성
- priority: 중요한 이미지로 설정하여 페이지 로드 시 우선 로드합니다.
- unoptimized: Next.js의 이미지 최적화를 비활성화합니다.
- quality: 이미지 품질을 설정합니다. (1~100, 기본값: 75)
- placeholder: 이미지 로딩 중 플레이스홀더를 설정합니다. (blur 또는 empty)
- blurDataURL: placeholder="blur"일 때 흐릿한 이미지를 표시하기 위한 데이터 URL입니다.
- 로딩 전략 및 반응형 속성
- loading: 로딩 전략을 설정합니다. (lazy 또는 eager)
- sizes: 반응형 이미지를 위한 힌트를 브라우저에 제공하여 적절한 크기를 선택하도록 합니다.
4. 사용 예시
정적 이미지
프로젝트 내 public 디렉토리에 저장된 이미지를 사용:
<Image src="/logo.png" alt="Logo" width={100} height={100} />
외부 이미지
외부 URL을 사용하는 경우:
<Image
src="https://example.com/image.jpg"
alt="External image"
width={500}
height={500}
unoptimized
/>
반응형 배너 이미지
레이아웃을 responsive로 설정해 화면 크기에 맞게 자동 조정:
<Image
src="/banner.jpg"
alt="Banner"
layout="responsive"
width={1600}
height={900}
/>
fill 이미지
<Image
src="/banner.jpg"
alt="Banner"
fill
/>