Skip to content

Commit fb16a67

Browse files
i18n(ko-KR): update image-service-reference.mdx (#12307)
Co-authored-by: Yan <[email protected]>
1 parent 2730df6 commit fb16a67

File tree

1 file changed

+74
-48
lines changed

1 file changed

+74
-48
lines changed

src/content/docs/ko/reference/image-service-reference.mdx

Lines changed: 74 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ Astro는 로컬과 외부라는 두 가지 유형의 이미지 서비스를 제
2828

2929
외부 서비스는 최종 `<img>` 태그의 `src` 속성으로 사용될 원격 URL을 가리킵니다. 이 원격 URL은 이미지 다운로드, 변환 및 반환을 담당합니다.
3030

31-
```js
31+
```ts
3232
import type { ExternalImageService, ImageTransform, AstroConfig } from "astro";
3333

3434
const service: ExternalImageService = {
3535
validateOptions(options: ImageTransform, imageConfig: AstroConfig['image']) {
3636
const serviceConfig = imageConfig.service.config;
3737

3838
// 사용자가 설정한 최대 너비를 적용합니다.
39-
if (options.width > serviceConfig.maxWidth) {
39+
if (options.width && options.width > serviceConfig.maxWidth) {
4040
console.warn(`Image width ${options.width} exceeds max width ${serviceConfig.maxWidth}. Falling back to max width.`);
4141
options.width = serviceConfig.maxWidth;
4242
}
@@ -64,11 +64,11 @@ export default service;
6464

6565
자신만의 로컬 서비스를 생성하려면 [내장된 엔드포인트](https://github.com/withastro/astro/blob/main/packages/astro/src/assets/endpoint/generic.ts) (`/_image`)를 가리키거나 서비스의 메서드를 호출할 수 있는 자체 엔드포인트를 추가로 생성할 수 있습니다.
6666

67-
```js
68-
import type { LocalImageService, AstroConfig } from "astro";
67+
```ts
68+
import type { ImageTransform, LocalImageService, AstroConfig } from "astro";
6969

70-
const service: LocalImageService = {
71-
getURL(options: ImageTransform, imageConfig: AstroConfig['image']) {
70+
const service: LocalImageService<AstroConfig["image"]> = {
71+
getURL(options: ImageTransform, imageConfig) {
7272
const searchParams = new URLSearchParams();
7373
searchParams.append('href', typeof options.src === "string" ? options.src : options.src.src);
7474
options.width && searchParams.append('w', options.width.toString());
@@ -80,6 +80,7 @@ const service: LocalImageService = {
8080
// 이 함수는 `/_image?${searchParams}`를 반환합니다.
8181
},
8282
parseURL(url: URL, imageConfig) {
83+
const params = url.searchParams;
8384
return {
8485
src: params.get('href')!,
8586
width: params.has('w') ? parseInt(params.get('w')!) : undefined,
@@ -88,8 +89,8 @@ const service: LocalImageService = {
8889
quality: params.get('q'),
8990
};
9091
},
91-
transform(buffer: Uint8Array, options: { src: string, [key: string]: any }, imageConfig): { data: Uint8Array, format: OutputFormat } {
92-
const { buffer } = mySuperLibraryThatEncodesImages(options);
92+
async transform(inputBuffer: Uint8Array, options: { src: string, [key: string]: any }, imageConfig) {
93+
const { buffer } = await mySuperLibraryThatEncodesImages(options);
9394
return {
9495
data: buffer,
9596
format: options.format,
@@ -159,9 +160,13 @@ export const GET: APIRoute = async ({ request }) => {
159160

160161
### `getURL()`
161162

162-
**로컬 및 외부 서비스에 필요함**
163+
<p>
163164

164-
`getURL(options: ImageTransform, imageConfig: AstroConfig['image']): string`
165+
**타입:** `(options: ImageTransform, imageConfig: AstroConfig['image']) => string | Promise<string>`<br />
166+
<Since v="2.1.0" />
167+
</p>
168+
169+
**로컬 및 외부 서비스에 필요함**
165170

166171
로컬 서비스의 경우 이 후크는 이미지를 생성하는 엔드포인트의 URL을 반환합니다 (요청 시 렌더링 및 개발 모드에서). 빌드 중에는 사용되지 않습니다. `getURL()`이 가리키는 로컬 엔드포인트는 `parseURL()``transform()`을 모두 호출할 수 있습니다.
167172

@@ -171,59 +176,74 @@ export const GET: APIRoute = async ({ request }) => {
171176

172177
```ts
173178
export type ImageTransform = {
174-
// 이미지를 가져오는 ESM | 원격/public 이미지 경로
175-
src: ImageMetadata | string;
176-
width?: number;
177-
height?: number;
178-
widths?: number[] | undefined;
179-
densities?: (number | `${number}x`)[] | undefined;
180-
quality?: ImageQuality;
181-
format?: OutputFormat;
182-
alt?: string;
183-
[key: string]: any;
179+
// 이미지를 가져오는 ESM | 원격/public 이미지 경로
180+
src: ImageMetadata | string;
181+
width?: number | undefined;
182+
height?: number | undefined;
183+
widths?: number[] | undefined;
184+
densities?: (number | `${number}x`)[] | undefined;
185+
quality?: ImageQuality | undefined;
186+
format?: OutputFormat | undefined;
187+
fit?: ImageFit | undefined;
188+
position?: string | undefined;
189+
[key: string]: any;
184190
};
185191
```
186192

187193
### `parseURL()`
188194

189-
**로컬 서비스에 필요합니다. 외부 서비스에 사용할 수 없음**
195+
<p>
190196

191-
`parseURL(url: URL, imageConfig: AstroConfig['image']): { src: string, [key: string]: any}`
197+
**타입:** `(url: URL, imageConfig: AstroConfig['image']) => { src: string, [key: string]: any } | undefined | Promise<{ src: string, [key: string]: any }> | Promise<undefined>`<br />
198+
<Since v="2.1.0" />
199+
</p>
200+
201+
**로컬 서비스에만 필요합니다. 외부 서비스에 사용할 수 없음**
192202

193203
이 후크는 `getURL()`에 의해 생성된 URL을 `transform` (요청 시 렌더링 및 개발 모드에서)에 사용되는 다른 속성을 가진 객체로 다시 구문 분석합니다. 빌드 중에는 사용되지 않습니다.
194204

195205
### `transform()`
196206

197-
**로컬 서비스에만 필요합니다. 외부 서비스에 사용할 수 없음**
207+
<p>
208+
209+
**타입:** `(inputBuffer: Uint8Array, options: { src: string, [key: string]: any }, imageConfig: AstroConfig['image']) => Promise<{ data: Uint8Array; format: ImageOutputFormat }>`<br />
210+
<Since v="2.1.0" />
211+
</p>
198212

199-
`transform(buffer: Uint8Array, options: { src: string, [key: string]: any }, imageConfig: AstroConfig['image']): { data: Uint8Array, format: OutputFormat }`
213+
**로컬 서비스에만 필요합니다. 외부 서비스에 사용할 수 없음**
200214

201215
이 후크는 이미지를 변환하고 반환하며 빌드 중에 호출되어 최종 자산 파일을 생성합니다.
202216

203217
요청 시 렌더링 및 개발 모드에서 사용자에게 적절한 MIME 유형이 제공되도록 하려면 `format`을 반환해야 합니다.
204218

205219
### `getHTMLAttributes()`
206220

207-
**로컬 및 외부 서비스 모두 선택 사항**
221+
<p>
222+
223+
**타입:** `(options: ImageTransform, imageConfig: AstroConfig['image'] ) => Record<string, any> | Promise<Record<string, any>>`<br />
224+
<Since v="2.1.0" />
225+
</p>
208226

209-
`getHTMLAttributes(options: ImageTransform, imageConfig: AstroConfig['image']): Record<string, any>`
227+
**로컬 및 외부 서비스 모두 선택 사항**
210228

211229
이 후크는 사용자가 전달한 매개변수 (`options`)를 기반으로 이미지를 HTML로 렌더링하는 데 사용되는 모든 추가 속성을 반환합니다.
212230

213231
### `getSrcSet()`
214232

215-
<p><Since v="3.3.0" /></p>
233+
<p>
216234

217-
**로컬 및 외부 서비스 모두 선택 사항입니다.**
235+
**타입:** `(options: ImageTransform, imageConfig: AstroConfig['image'] ) => UnresolvedSrcSetValue[] | Promise<UnresolvedSrcSetValue[]>`<br />
236+
<Since v="3.3.0" />
237+
</p>
218238

219-
`getSrcSet?: (options: ImageTransform, imageConfig: AstroConfig['image']): SrcSetValue[] | Promise<SrcSetValue[]>;`
239+
**로컬 및 외부 서비스 모두 선택 사항입니다.**
220240

221241
이 후크는 `<img>` 또는 `<picture>``source``srcset` 속성을 생성하기 위해 지정된 이미지의 여러 변형을 생성합니다.
222242

223243
이 후크는 다음 속성을 가진 객체 배열을 반환합니다.
224244

225245
```ts
226-
export type SrcSetValue = {
246+
export type UnresolvedSrcSetValue = {
227247
transform: ImageTransform;
228248
descriptor?: string;
229249
attributes?: Record<string, any>;
@@ -232,9 +252,13 @@ export type SrcSetValue = {
232252

233253
### `validateOptions()`
234254

235-
**로컬 및 외부 서비스 모두 선택 사항**
255+
<p>
236256

237-
`validateOptions(options: ImageTransform, imageConfig: AstroConfig['image']): ImageTransform`
257+
**타입:** `(options: ImageTransform, imageConfig: AstroConfig['image'] ) => ImageTransform | Promise<ImageTransform>`
258+
<Since v="2.1.4" />
259+
</p>
260+
261+
**로컬 및 외부 서비스 모두 선택 사항**
238262

239263
이 후크를 사용하면 사용자가 전달한 옵션을 검증하고 강화할 수 있습니다. 이는 기본 옵션을 설정하거나 사용자에게 매개변수가 필요함을 알리는 데 유용합니다.
240264

@@ -276,6 +300,7 @@ import {
276300
resolveSrc,
277301
imageMetadata,
278302
emitESMImage,
303+
emitImageMetadata,
279304
getOrigQueryParams,
280305
inferRemoteSize,
281306
propsToFilename,
@@ -286,7 +311,7 @@ import {
286311
### `isRemoteAllowed()`
287312

288313
<p>
289-
**타입:** `(src: string, { domains, remotePatterns }: {domains: string[], remotePatterns: RemotePattern[] }): boolean`<br />
314+
**타입:** `(src: string, { domains, remotePatterns }: { domains: string[], remotePatterns: RemotePattern[] }) => boolean`<br />
290315
<Since v="4.0.0" />
291316
</p>
292317

@@ -310,7 +335,7 @@ console.log(`Is the remote image allowed? ${isAllowed}`);
310335
### `matchHostname()`
311336

312337
<p>
313-
**타입:** `(url: URL, hostname?: string, allowWildcard = false): boolean`<br />
338+
**타입:** `(url: URL, hostname?: string, allowWildcard = false) => boolean`<br />
314339
<Since v="4.0.0" />
315340
</p>
316341

@@ -336,7 +361,7 @@ console.log(`Does the hostname match with wildcard? ${isMatchWithWildcard}`); //
336361
### `matchPathname()`
337362

338363
<p>
339-
**타입:** `(url: URL, pathname?: string, allowWildcard = false): boolean`<br />
364+
**타입:** `(url: URL, pathname?: string, allowWildcard = false) => boolean`<br />
340365
<Since v="4.0.0" />
341366
</p>
342367

@@ -363,7 +388,7 @@ console.log(`Does the pathname match with wildcard? ${isMatchWithWildcard}`); //
363388
### `matchPattern()`
364389

365390
<p>
366-
**타입:** `(url: URL, remotePattern: RemotePattern): boolean`<br />
391+
**타입:** `(url: URL, remotePattern: RemotePattern) => boolean`<br />
367392
<Since v="4.0.0" />
368393
</p>
369394

@@ -391,7 +416,7 @@ console.log(`Does the URL match the remote pattern? ${isPatternMatched}`); //
391416
### `matchPort()`
392417

393418
<p>
394-
**타입:** `(url: URL, port?: string): boolean`<br />
419+
**타입:** `(url: URL, port?: string) => boolean`<br />
395420
<Since v="4.0.0" />
396421
</p>
397422

@@ -422,7 +447,7 @@ console.log(`Does the port match (no port specified)? ${isPortMatch3}`); // 출
422447
### `matchProtocol()`
423448

424449
<p>
425-
**타입:** `(url: URL, protocol?: string): boolean`<br />
450+
**타입:** `(url: URL, protocol?: string) => boolean`<br />
426451
<Since v="4.0.0" />
427452
</p>
428453

@@ -453,7 +478,7 @@ console.log(`Does the protocol match (no protocol specified)? ${isProtocolMatch3
453478
### `isESMImportedImage()`
454479

455480
<p>
456-
**타입:** `(src: ImageMetadata | string): boolean`<br />
481+
**타입:** `(src: ImageMetadata | string) => boolean`<br />
457482
<Since v="4.0.0" />
458483
</p>
459484

@@ -484,7 +509,7 @@ console.log(`Is filePathExample an ESM imported image? ${isFilePathImage}`); //
484509
### `isRemoteImage()`
485510

486511
<p>
487-
**타입:** `(src: ImageMetadata | string): boolean`<br />
512+
**타입:** `(src: ImageMetadata | string) => boolean`<br />
488513
<Since v="4.0.0" />
489514
</p>
490515

@@ -513,7 +538,7 @@ console.log(`Is localImageMetadata a remote image? ${isRemote2}`); // 출력: fa
513538
### `resolveSrc()`
514539

515540
<p>
516-
**타입:** `(src: UnresolvedImageTransform['src']): Promise<string | ImageMetadata>`<br />
541+
**타입:** `(src: UnresolvedImageTransform['src']) => Promise<string | ImageMetadata>`<br />
517542
<Since v="4.0.0" />
518543
</p>
519544

@@ -537,7 +562,7 @@ const resolvedDynamic = await resolveSrc(import("./images/dynamic-image.jpg"))
537562
### `imageMetadata()`
538563

539564
<p>
540-
**타입:** `(data: Uint8Array, src?: string): Promise<Omit<ImageMetadata, 'src' | 'fsPath'>>`<br />
565+
**타입:** `(data: Uint8Array, src?: string) => Promise<Omit<ImageMetadata, 'src' | 'fsPath'>>`<br />
541566
<Since v="4.0.0" />
542567
</p>
543568

@@ -580,7 +605,7 @@ await extractImageMetadata();
580605
:::
581606

582607
<p>
583-
**타입:** `(id: string | undefined, _watchMode: boolean, experimentalSvgEnabled: boolean, fileEmitter?: FileEmitter): Promise<ImageMetadataWithContents | undefined>`<br />
608+
**타입:** `(id: string | undefined, _watchMode: boolean, experimentalSvgEnabled: boolean, fileEmitter?: FileEmitter) => Promise<ImageMetadataWithContents | undefined>`<br />
584609
<Since v="4.0.0" />
585610
</p>
586611

@@ -617,7 +642,7 @@ try {
617642
### `emitImageMetadata()`
618643

619644
<p>
620-
**타입:** `(id: string | undefined, fileEmitter?: FileEmitter): Promise<ImageMetadataWithContents | undefined>`<br />
645+
**타입:** `(id: string | undefined, fileEmitter?: FileEmitter) => Promise<ImageMetadataWithContents | undefined>`<br />
621646
<Since v="5.7.0" />
622647
</p>
623648

@@ -652,7 +677,7 @@ try {
652677
### `getOrigQueryParams()`
653678

654679
<p>
655-
**타입:** `(params: URLSearchParams): Pick<ImageMetadata, 'width' | 'height' | 'format'> | undefined`<br />
680+
**타입:** `(params: URLSearchParams) => Pick<ImageMetadata, 'width' | 'height' | 'format'> | undefined`<br />
656681
<Since v="4.0.0" />
657682
</p>
658683

@@ -685,7 +710,7 @@ if (origParams) {
685710
### `inferRemoteSize()`
686711

687712
<p>
688-
**타입:** `(url: string): Promise<Omit<ImageMetadata, 'src' | 'fsPath'>>`<br />
713+
**타입:** `(url: string) => Promise<Omit<ImageMetadata, 'src' | 'fsPath'>>`<br />
689714
<Since v="4.0.0" />
690715
</p>
691716

@@ -720,7 +745,7 @@ await getRemoteImageSize();
720745
### `propsToFilename()`
721746

722747
<p>
723-
**타입:** `(filePath: string, transform: ImageTransform, hash: string): string`<br />
748+
**타입:** `(filePath: string, transform: ImageTransform, hash: string) => string`<br />
724749
<Since v="4.0.0" />
725750
</p>
726751

@@ -759,7 +784,7 @@ generateTransformedFilename();
759784
### `hashTransform()`
760785

761786
<p>
762-
**타입:** `(transform: ImageTransform, imageService: string, propertiesToHash: string[]): string`<br />
787+
**타입:** `(transform: ImageTransform, imageService: string, propertiesToHash: string[]) => string`<br />
763788
<Since v="4.0.0" />
764789
</p>
765790

@@ -771,6 +796,7 @@ import { hashTransform } from 'astro/assets/utils';
771796

772797
function generateTransformHash() {
773798
const transform = {
799+
src: '/images/photo.jpg',
774800
width: 800,
775801
height: 600,
776802
format: 'jpg',

0 commit comments

Comments
 (0)