이미지
Astro는 프로젝트 내부에 로컬로 저장되거나, 외부 URL에서 연결되거나, CMS 또는 CDN에서 관리되는 등 사이트에서 이미지를 사용할 수 있는 여러 가지 방법을 제공합니다!
<Image />
및 <Picture />
컴포넌트의 전체 API 참조를 확인하세요.
이미지 저장 위치
섹션 제목: 이미지 저장 위치src/
vs public/
섹션 제목: src/ vs public/Astro가 이미지를 변환, 최적화, 번들링할 수 있도록 가능하면 로컬 이미지를 src/
에 보관하는 것이 좋습니다. /public
디렉터리의 파일은 처리 없이 항상 있는 그대로 빌드 폴더에 제공되거나 복사됩니다.
src/
에 저장된 로컬 이미지는 .astro
, .md
, .mdx
, .mdoc
및 기타 UI 프레임워크 등 프로젝트의 모든 파일에서 사용할 수 있습니다. 이미지는 콘텐츠 근처를 포함하여 모든 폴더에 저장할 수 있습니다.
이미지 처리를 피하거나 이미지에 대한 직접 공개 링크를 갖고 싶다면 public/
폴더에 이미지를 저장하세요.
원격 이미지
섹션 제목: 원격 이미지또한 콘텐츠 관리 시스템 (CMS) 또는 디지털 자산 관리 (DAM) 플랫폼에 이미지를 원격으로 저장하도록 선택할 수도 있습니다. Astro는 API를 사용하여 원격으로 데이터를 가져오거나 전체 URL 경로를 이용하여 이미지를 표시할 수 있습니다.
외부 소스를 다룰 때 추가적인 보호를 위해 Astro의 이미지 컴포넌트와 도우미 함수는 구성에서 지정한 승인된 이미지 소스의 이미지만 처리 (예: 최적화, 변환)합니다. 다른 소스의 원격 이미지는 처리하지 않고 표시됩니다.
.astro
파일의 이미지
섹션 제목: .astro 파일의 이미지.astro
파일에서 로컬 이미지는 상대 경로에서 가져와야 합니다. 이 가져오기는 이미지의 src
값을 제공합니다.
원격 및 public/
이미지는 가져오기가 필요하지 않으며 대신 src
에 대한 URL (사이트의 전체 또는 상대 경로)이 필요합니다.
최적화된 이미지를 위해 Astro의 기본 <Image />
및 <Picture />
컴포넌트를 가져와 사용합니다. Astro 구문에서는 이미지 처리를 생략하기 위해 HTML <img>
태그를 직접 작성할 수도 있습니다.
<Image />
및 <Picture />
컴포넌트의 전체 API 참조를 확인하세요.
<Image />
컴포넌트를 사용하여 최적화된 이미지 표시
섹션 제목: <Image /> 컴포넌트를 사용하여 최적화된 이미지 표시기본으로 제공되는 <Image />
Astro 컴포넌트를 사용하여 다음의 최적화된 버전을 표시합니다:
src/
폴더에 있는 로컬 이미지- 인증된 소스에서 가져오는 구성된 원격 이미지
public/
폴더에 있는 이미지와 프로젝트에 특별히 구성되지 않은 원격 이미지도 이미지 컴포넌트와 함께 사용할 수 있지만 처리되지는 않습니다.
<Image />
는 표시된 이미지를 제어하기 위해 로컬 또는 인증된 원격 이미지의 크기, 파일 유형 및 품질을 변환할 수 있습니다. 결과 <img>
태그에는 alt
, loading
및 decoding
속성이 포함되며 CLS (Cumulative Layout Shift)를 방지하기 위해 이미지 크기를 유추합니다.
CLS (Cumulative Layout Shift)는 로드하는 동안 페이지에서 콘텐츠가 얼마나 이동했는지 측정하기 위한 Core Web Vital 지표입니다. <Image />
컴포넌트는 이미지에 대해 올바른 width
및 height
를 자동으로 설정하여 CLS에 맞게 최적화합니다.
<Image />
컴포넌트는 HTML <img>
태그가 허용하는 모든 속성뿐만 아니라 여러 컴포넌트 속성을 허용합니다.
다음 예시는 최종 <img>
요소에 적용될 이미지 컴포넌트에 class
를 제공합니다.
이미지가 최적화되거나 처리되지 않더라도 프로젝트에 특별히 구성되지 않은 public/
폴더의 이미지 또는 원격 이미지에 <Image />
컴포넌트를 사용할 수도 있습니다. 결과 이미지는 HTML <img>
를 사용하는 것과 동일합니다.
그러나 모든 이미지에 이미지 컴포넌트를 사용하면 일관된 저작 환경을 제공하고 최적화되지 않은 이미지의 경우에도 누적 레이아웃 이동 (CLS)을 방지할 수 있습니다.
<Picture />
컴포넌트를 사용해 반응형 이미지 만들기
섹션 제목: <Picture /> 컴포넌트를 사용해 반응형 이미지 만들기
Added in:
astro@3.3.0
다양한 형식 및 크기로 반응형 이미지를 표시하려면 내장된 <Picture />
Astro 컴포넌트를 사용하세요.
<Picture />
컴포넌트의 속성에 대한 자세한 내용은 astro:assets
참조에서 알아보세요.
HTML <img>
태그를 사용하여 처리되지 않은 이미지 표시
섹션 제목: HTML <img> 태그를 사용하여 처리되지 않은 이미지 표시Astro 템플릿 구문은 최종 출력에 대한 완전한 제어를 위해 <img>
태그를 직접 작성하는 것도 지원합니다. 이러한 이미지는 처리 및 최적화되지 않습니다. 모든 HTML <img>
태그 속성을 허용하며, 필수 속성은 src
뿐입니다.
로컬 이미지는 기존 .astro
파일의 상대 경로에서 가져오거나 가져오기 별칭을 구성하여 사용할 수 있습니다. 그런 다음 이미지의 src
및 기타 속성에 액세스하여 <img>
태그에 사용할 수 있습니다.
가져온 이미지 자산은 다음 시그니처와 일치합니다:
다음 예시는 이미지 자체의 height
및 width
속성을 사용하여 누적 레이아웃 이동 (CLS)을 방지하고 핵심 웹 바이탈을 개선합니다:
public/
의 이미지
섹션 제목: public/의 이미지public/
에 있는 이미지의 경우 src
값으로 이미지의 public 폴더에 상대적인 파일 경로를 사용합니다.
원격 이미지
섹션 제목: 원격 이미지원격 이미지의 경우 이미지의 전체 URL을 src
값으로 사용하세요.
<Image />
vs <img>
선택
섹션 제목: <Image /> vs <img> 선택<Image />
컴포넌트는 이미지를 최적화하고 CLS를 방지하기 위해 원본 가로 세로 비율을 기반으로 (처리할 수 있는 이미지의 경우) 너비와 높이를 추론합니다. 가능하면 .astro
파일로 이미지를 사용하는 것이 좋습니다.
<Image />
컴포넌트를 사용할 수 없는 경우 HTML <img>
요소를 사용하세요. 예를 들면 다음과 같습니다.
- 지원되지 않는 이미지 형식의 경우
- Astro로 이미지 최적화를 원하지 않는 경우
- 클라이언트 측에서
src
속성에 동적으로 액세스하고 변경하려는 경우
기본값 설정
섹션 제목: 기본값 설정현재 모든 <Image />
또는 <Picture/>
컴포넌트에 대한 기본값을 지정할 수 있는 방법은 없습니다. 필수 속성은 각 개별 컴포넌트에 설정되어야 합니다.
대안으로 재사용을 위해 이러한 컴포넌트를 다른 Astro 컴포넌트로 래핑할 수 있습니다. 예를 들어 속성을 props로 전달받고 각 이미지에 일관된 스타일을 적용하는 블로그 게시물 이미지 컴포넌트를 만들 수 있습니다.
원격 이미지 승인
섹션 제목: 원격 이미지 승인image.domains
및 image.remotePatterns
을 사용하여 이미지 최적화를 위해 인증된 이미지 소스 URL 도메인 및 패턴 목록을 구성할 수 있습니다. 이 구성은 외부 소스의 이미지를 표시할 때 사이트를 보호하기 위한 추가 안전 계층입니다.
다른 소스의 원격 이미지는 최적화되지 않지만 이러한 이미지에 <Image />
컴포넌트를 사용하면 CLS (Cumulative Layout Shift)가 방지됩니다.
예를 들어 다음 구성에서는 astro.build
의 원격 이미지만 최적화할 수 있습니다.
다음 구성은 HTTPS 호스트의 원격 이미지만 허용합니다.
CMS 또는 CDN의 이미지 사용
섹션 제목: CMS 또는 CDN의 이미지 사용이미지 CDN은 모든 Astro 이미지 옵션에서 작동합니다. 이미지의 전체 URL을 <Image />
컴포넌트, <img>
태그 또는 Markdown 표기법에서 src
속성으로 사용하세요. 원격 이미지로 이미지를 최적화하려면 승인된 도메인 또는 URL 패턴을 구성하세요.
또는 CDN이 자체 SDK를 제공하여 Astro 프로젝트에 더 쉽게 통합할 수도 있습니다. 예를 들어, Cloudinary는 이미지를 CldImage
컴포넌트에 쉽게 넣을 수 있는 Astro SDK 또는 Node.js 환경에서 <img>
태그와 함께 사용할 URL을 생성할 수 있는 Node.js SDK를 지원합니다.
<Image />
및 <Picture />
컴포넌트의 전체 API 참조를 확인하세요.
Markdown 파일의 이미지
섹션 제목: Markdown 파일의 이미지.md
파일에 표준 Markdown ![alt](src)
구문을 사용하세요. 이 구문은 Astro의 이미지 서비스 API와 함께 작동하여 src/
에 저장된 로컬 이미지를 최적화합니다. 원격 이미지와 public/
폴더에 저장된 이미지는 최적화되지 않습니다.
로컬 이미지에는 <img>
태그가 지원되지 않으며 .md
파일에서는 <Image />
및 <Picture />
컴포넌트를 사용할 수 없습니다.
이미지 속성에 대한 더 많은 제어가 필요한 경우, Astro의 MDX 통합을 사용하여 .mdx
파일 형식에 대한 지원을 추가하는 것이 좋습니다. MDX를 사용하면 Markdown에 컴포넌트를 추가할 수 있으며, MDX에서 사용할 수 있는 추가 이미지 옵션도 제공됩니다.
MDX 파일의 이미지
섹션 제목: MDX 파일의 이미지컴포넌트와 이미지를 모두 가져와 .mdx
파일에서 Astro의 <Image />
및 <Picture />
컴포넌트를 사용할 수 있습니다. .astro
파일에서 사용되는 것처럼 사용하세요. JSX <img />
태그는 처리되지 않은 이미지에도 지원되며 HTML <img>
태그와 동일한 이미지 가져오기를 사용합니다.
또한 가져오기가 필요 없는 표준 Markdown ![alt](src)
구문이 지원됩니다.
<Image />
및 <Picture />
컴포넌트의 전체 API 참조를 확인하세요.
콘텐츠 컬렉션의 이미지
섹션 제목: 콘텐츠 컬렉션의 이미지콘텐츠 컬렉션의 이미지는 사용 중인 파일 형식에 따라 Markdown 및 MDX에서와 동일한 방식으로 처리됩니다.
또한 현재 폴더에 대한 상대 경로를 사용하여 블로그 게시물의 표지 이미지와 같은 콘텐츠 컬렉션 항목 관련 이미지를 본문에 선언할 수 있습니다.
콘텐츠 컬렉션 스키마의 image
도우미를 사용하면 Zod를 사용하여 이미지 메타데이터의 유효성을 검사할 수 있습니다.
이미지를 가져와서 메타데이터로 변환하므로 이를 <Image/>
, <img>
, getImage()
에 src
로 전달할 수 있습니다.
아래 예시는 위 스키마에서 각 블로그 게시물의 표지 사진과 제목을 렌더링하는 블로그 인덱스 페이지를 보여줍니다.
UI 프레임워크 컴포넌트의 이미지
섹션 제목: UI 프레임워크 컴포넌트의 이미지다른 Astro 컴포넌트와 마찬가지로 <Image />
컴포넌트는 UI 프레임워크 컴포넌트에서 사용할 수 없습니다.
그러나 <Image />
에서 생성된 정적 콘텐츠를 .astro
파일의 프레임워크 컴포넌트에 자식으로 전달하거나 명명된 <slot/>
]을 사용하여 전달할 수 있습니다:
또한 프레임워크의 자체 이미지 구문을 사용하여 이미지를 렌더링할 수 있습니다 (예: JSX의 <img />
, Svelte의 <img>
).
src
와 같은 이미지 속성에 액세스하려면 로컬 이미지를 먼저 가져와야 합니다.
getImage()
를 사용하여 이미지 생성하기
섹션 제목: getImage()를 사용하여 이미지 생성하기getImage()
함수는 HTML이 아닌 다른 곳 (예: API 경로)에서 사용할 이미지를 생성하기 위한 것입니다. 현재 <Picture>
및 <Image>
컴포넌트가 지원하지 않는 옵션이 필요한 경우, getImage()
함수를 사용하여 사용자 정의 <Image />
컴포넌트를 생성할 수 있습니다.
getImage()
참조에서 자세히 알아보세요.
대체 텍스트
섹션 제목: 대체 텍스트모든 사용자가 동일한 방식으로 이미지를 볼 수 있는 것은 아니므로 이미지를 사용할 때 접근성은 특히 중요한 고려사항입니다. 이미지에 대한 설명 대체 텍스트를 제공하려면 alt
속성을 사용하세요.
이 속성은 <Image />
및 <Picture />
컴포넌트 모두에 필요합니다. 대체 텍스트가 제공되지 않으면 alt
속성을 포함하라는 유용한 오류 메시지가 제공됩니다.
이미지가 단지 장식용인 경우 (즉, 페이지 이해에 도움이 되지 않는 경우) 화면 판독기가 이미지를 무시할 수 있도록 alt=""
를 설정하세요.
기본 이미지 서비스
섹션 제목: 기본 이미지 서비스Sharp는 astro:assets
에 사용되는 기본 이미지 서비스입니다. image.service
옵션을 사용하여 이미지 서비스를 추가로 구성할 수 있습니다.
pnpm
과 같은 엄격한 패키지 관리자를 사용하는 경우 Astro 종속성임에도 불구하고 Sharp를 프로젝트에 수동으로 설치해야 할 수 있습니다.
Squoosh 구성
섹션 제목: Squoosh 구성Squoosh를 사용하여 이미지를 변환하려면 다음과 같이 구성을 업데이트하세요.
무작동 패스스루 서비스 구성
섹션 제목: 무작동 패스스루 서비스 구성server
또는 hybrid
모드용 어댑터가 Astro의 내장 Squoosh 및 Sharp 이미지 최적화를 지원하지 않는 경우 (예: Deno, Cloudflare) <Image />
및 <Picture />
컴포넌트를 사용할 수 있도록 무작동 이미지 서비스를 구성할 수 있습니다. Astro는 이러한 환경에서 이미지 변환 및 처리를 수행하지 않습니다. 그러나 CLS (Cumulative Layout Shift) 없음, 강제된 alt
속성 및 일관된 작성 환경을 포함하여 astro:assets
사용의 다른 이점을 계속 누릴 수 있습니다.
Squoosh 및 Sharp 이미지 처리를 모두 방지하려면 passthroughImageService()
를 구성하세요.
커뮤니티 통합
섹션 제목: 커뮤니티 통합Astro 프로젝트의 이미지를 최적화하고 작업하기 위한 여러 타사 커뮤니티 이미지 통합이 있습니다.
Learn