Images
Images
Ta strona omawia umieszczanie obrazów rastrowych na stronie, przeglądanie obrazów już osadzonych w dokumencie oraz zmniejszanie ich rozmiaru. Aby renderować page do obrazu, zobacz Conversion.
Osadzanie obrazu
Page.AddImage() umieszcza bajty obrazów JPEG, PNG, BMP lub TIFF w prostokącie o precyzji pikselowej na stronie.
// 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 akceptuje opacity, explicite format, gdy nie można go wykryć z bajtów, tag (StructElement do którego można dołączyć obraz w dokumencie oznaczonym), oraz layer dla opcjonalnej zawartości.
Przeglądanie osadzonych obrazów
Page.Images wymienia każdy obraz już znajdujący się na stronie jako ImageInfo[], bez dekodowania danych pikseli — każdy wpis udostępnia Width, Height, Bits, ColorSpace i Filter. Wywołaj Decode() na ImageInfo, aby uzyskać jego surowe bajty próbki, Replace(), aby zamienić je na nowe dane obrazu w miejscu, lub Remove(), aby usunąć go ze strony.
for (const img of page.Images) {
console.log(img.Width, img.Height, img.ColorSpace, img.Filter);
}Optymalizacja obrazów
Document.Optimize() zmniejsza rozmiar pliku w całym dokumencie; przekaż opcję images (OptimizeImageOptions, z polami dpi i quality), aby także przeskalować i ponownie zakodować osadzone obrazy w ramach tego samego przebiegu.
const report = doc.Optimize({ images: { dpi: 150, quality: 80 } });Wskazówki i najlepsze praktyki
Page.Imagesodczytuje tylko metadane — dekodowanie pełnych danych pikselowych każdego obrazu za pomocąDecode()z góry nie jest konieczne, jeśli potrzebujesz jedynie wymiarów lub przestrzeni kolorów.- Przekaż wyraźny
formatwAddImageOptions, gdy bajty źródłowe pochodzą ze strumienia lub bufora bez pewnego rozszerzenia pliku, które można wykryć. - Użyj
Document.Optimize({ images: { dpi, quality } }), aby zmniejszyć dokument zawierający wiele obrazów, zamiast ręcznie dekodować i ponownie dodawać każdy z nich. - Prostokąt
Page.AddImage()ustawia rozmiar umieszczony bezpośrednio — skaluj docelowy prostokąt do proporcji obrazu źródłowego, aby uniknąć jego rozciągania.
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
| Obraz wydaje się rozciągnięty lub ściśnięty | Docelowy rect przekazany do AddImage() nie pasuje do proporcji obrazu źródłowego | Oblicz szerokość/wysokość prostokąta na podstawie własnych wymiarów obrazu źródłowego |
Page.AddImage() używa niewłaściwego formatu | Nie można było wiarygodnie wykryć formatu bajtów obrazu | Przekaż wyraźny format w AddImageOptions |
| Dokument jest znacznie większy niż oczekiwano po dodaniu obrazów | Obrazy zostały osadzone w pełnej rozdzielczości i jakości | Wywołaj Document.Optimize({ images: { dpi, quality } }), aby zmniejszyć rozdzielczość i ponownie zakodować |
FAQ
Jak umieścić obraz na stronie?
Wywołaj page.AddImage(imageBytes, rect), gdzie rect jest [x0, y0, x1, y1] prostokątem w punktach przestrzeni strony.
Jak wyświetlić listę obrazów już znajdujących się na stronie bez ich dekodowania?
Odczytaj page.Images — ImageInfo[] udostępniający Width, Height, ColorSpace i Filter dla każdego obrazu bez dekodowania danych pikseli.
Czy mogę zmniejszyć rozmiar pliku dokumentu, kompresując jego obrazy?
Tak — wywołaj Document.Optimize({ images: { dpi, quality } }), które zmniejsza rozdzielczość i ponownie koduje osadzone obrazy w ramach optymalizacji obejmującej cały dokument.
Czym różni się osadzanie obrazu od renderowania strony do obrazu?
Page.AddImage() umieszcza bajty obrazu rastrowego na istniejącej stronie. Page.ToImage() (see Conversion) robi odwrotnie — renderuje całą stronę do bajtów PNG.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
Page.AddImage() | Umieść bajty obrazu w prostokącie na stronie |
AddImageOptions | Opcje dla AddImage(): opacity, format, tag, layer |
Page.Images | Każdy obraz już na stronie, jako jedynie metadane ImageInfo[] |
ImageInfo.Decode() / Replace() / Remove() | Odczytaj dane pikseli, zamień na nowe bajty lub usuń obraz |
Document.Optimize() | Zmniejsz rozmiar pliku w całym dokumencie, opcjonalnie zmniejszając rozdzielczość obrazów za pomocą images: { dpi, quality } |