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.Images odczytuje 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 format w AddImageOptions, 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

ProblemPrzyczynaRozwiązanie
Obraz wydaje się rozciągnięty lub ściśniętyDocelowy rect przekazany do AddImage() nie pasuje do proporcji obrazu źródłowegoOblicz szerokość/wysokość prostokąta na podstawie własnych wymiarów obrazu źródłowego
Page.AddImage() używa niewłaściwego formatuNie można było wiarygodnie wykryć formatu bajtów obrazuPrzekaż wyraźny format w AddImageOptions
Dokument jest znacznie większy niż oczekiwano po dodaniu obrazówObrazy zostały osadzone w pełnej rozdzielczości i jakościWywoł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/MetodaOpis
Page.AddImage()Umieść bajty obrazu w prostokącie na stronie
AddImageOptionsOpcje dla AddImage(): opacity, format, tag, layer
Page.ImagesKaż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 }

Zobacz także

 Polski