Images
Images
이 페이지에서는 페이지에 래스터 이미지를 배치하고, 문서에 이미 삽입된 이미지를 검사하며, 이미지 크기를 줄이는 방법을 다룹니다. 렌더링을 위해서는 page 이미지로 변환하려면, 참고 Conversion.
이미지 삽입
Page.AddImage()은(는) JPEG, PNG, BMP, 또는 TIFF 이미지 바이트를 페이지의 픽셀 정밀 사각형에 배치합니다.
// Source is 1280x1014; scaled to 60% of the page width, aspect preserved.
const srcW = 1280;
const srcH = 1014;
const imgW = pageWidth(page) * 0.6;
const imgH = (imgW * srcH) / srcW;
const x = (pageWidth(page) - imgW) / 2;
const y = (pageHeight(page) - imgH) / 2;
page.AddImage(imageBytes, [x, y, x + imgW, y + imgH]);AddImageOptions은(는) opacity을(를) 받아들이며, 바이트에서 감지할 수 없을 때 명시적인 format를, tag(태그가 지정된 문서에서 이미지에 첨부할 StructElement)을, 그리고 선택적 콘텐츠를 위한 layer를 허용합니다.
내장된 이미지 검사
Page.Images은(는) 페이지에 이미 존재하는 모든 이미지를 ImageInfo[]으로 나열하며, 픽셀 데이터를 디코딩하지 않습니다 — 각 항목은 Width, Height, Bits, ColorSpace, 및 Filter을(를) 노출합니다. ImageInfo에 대해 Decode()을 호출하면 원시 샘플 바이트를 얻을 수 있고, Replace()을 사용하면 새 이미지 데이터를 제자리에서 교체할 수 있으며, Remove()을 호출하면 페이지에서 해당 이미지를 삭제할 수 있습니다.
for (const img of page.Images) {
console.log(img.Width, img.Height, img.ColorSpace, img.Filter);
}이미지 최적화
Document.Optimize()은 전체 문서의 파일 크기를 감소시킵니다; images 옵션(OptimizeImageOptions, dpi 및 quality 필드 포함)을 전달하면 동일한 패스에서 포함된 이미지를 다운샘플링하고 재인코딩할 수 있습니다.
const report = doc.Optimize({ images: { dpi: 150, quality: 80 } });팁 및 모범 사례
Page.Images은 메타데이터만 읽습니다 — 차원이나 색상 공간만 필요할 경우Decode()으로 모든 이미지의 전체 픽셀 데이터를 미리 디코딩할 필요가 없습니다.- 소스 바이트가 신뢰할 수 있는 파일 확장자를 감지할 수 없는 스트림이나 버퍼에서 오는 경우
AddImageOptions에 명시적인format을 전달하십시오. - 많은 이미지가 포함된 문서를 축소하려면 각 이미지를 수동으로 디코딩하고 다시 추가하는 대신
Document.Optimize({ images: { dpi, quality } })을 사용하십시오. Page.AddImage()의 사각형은 배치 크기를 직접 설정합니다 — 대상 사각형을 원본 이미지의 종횡비에 맞게 스케일링하여 왜곡을 방지하십시오.
일반적인 문제
| 문제 | 원인 | 해결 |
|---|---|---|
| 이미지가 늘어나거나 압축된 것처럼 보입니다 | 대상 rect이(가) AddImage()에 전달되었지만 원본 이미지의 종횡비와 일치하지 않습니다 | 사각형의 너비/높이를 원본 이미지 자체 차원에서 계산합니다 |
Page.AddImage()가 잘못된 형식을 사용합니다 | 이미지 바이트의 형식을 신뢰성 있게 감지할 수 없었습니다. | 명시적인 format를 AddImageOptions에 전달하십시오. |
| 이미지를 추가한 후 문서가 예상보다 훨씬 커졌습니다. | 이미지가 전체 해상도와 품질로 삽입되었습니다. | Document.Optimize({ images: { dpi, quality } })를 호출하여 다운샘플링하고 재인코딩하십시오. |
FAQ
페이지에 이미지를 배치하려면 어떻게 해야 하나요?
page.AddImage(imageBytes, rect)를 호출하고, rect은 페이지 공간 포인트 단위의 [x0, y0, x1, y1] 사각형입니다.
페이지에 이미 있는 이미지를 디코딩하지 않고 나열하려면 어떻게 해야 하나요?
page.Images를 읽으세요 — 픽셀 데이터를 디코딩하지 않고 각 이미지에 대해 Width, Height, ColorSpace, Filter를 노출하는 ImageInfo[]입니다.
문서의 이미지를 압축하여 파일 크기를 줄일 수 있나요?
예 — Document.Optimize({ images: { dpi, quality } })를 호출하면, 문서 전체 최적화 과정의 일환으로 삽입된 이미지를 다운샘플링하고 다시 인코딩합니다.
이미지를 삽입하는 것과 페이지를 이미지로 렌더링하는 것의 차이점은 무엇인가요?
Page.AddImage() 래스터 이미지 바이트를 기존 페이지에 배치합니다. Page.ToImage() (see Conversion)는 반대로 — 전체 페이지를 PNG 바이트로 렌더링합니다.
API Reference 요약
| 클래스/메서드 | 설명 |
|---|---|
Page.AddImage() | 이미지 바이트를 페이지의 사각형에 배치합니다. |
AddImageOptions | AddImage()에 대한 옵션: opacity, format, tag, layer |
Page.Images | 페이지에 이미 존재하는 모든 이미지, 메타데이터 전용 ImageInfo[] |
ImageInfo.Decode() / Replace() / Remove() | 픽셀 데이터를 읽고, 새 바이트로 교체하거나, 이미지를 제거합니다. |
Document.Optimize() | 문서 전체에서 파일 크기를 줄이고, 필요에 따라 images: { dpi, quality }를 사용해 이미지를 다운샘플링합니다. |