Images
Images
Denna sida behandlar att placera rasterbilder på en sida, inspektera bilder som redan är inbäddade i ett dokument och minska deras storlek. För rendering av en page till en bild, se Conversion.
Inbädda en bild
Page.AddImage() placerar JPEG-, PNG-, BMP- eller TIFF-bildbytes i en pixelprecis rektangel på sidan.
// 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 accepterar opacity, en explicit format när den inte kan identifieras från byten, en tag (en StructElement att fästa bilden på i ett taggat dokument), och en layer för valfritt innehåll.
Inspektera inbäddade bilder
Page.Images listar varje bild som redan finns på sidan som ImageInfo[], utan att avkoda någon pixeldata — varje post visar Width, Height, Bits, ColorSpace och Filter. Anropa Decode() på ett ImageInfo för att få dess råa provbytes, Replace() för att byta in ny bilddata på plats, eller Remove() för att ta bort den från sidan.
for (const img of page.Images) {
console.log(img.Width, img.Height, img.ColorSpace, img.Filter);
}Optimera bilder
Document.Optimize() minskar filstorleken i hela dokumentet; skicka ett images alternativ (OptimizeImageOptions, med dpi och quality fält) för att även nerprovsampling och återkoda inbäddade bilder som en del av samma körning.
const report = doc.Optimize({ images: { dpi: 150, quality: 80 } });Tips och bästa praxis
Page.Imagesläser endast metadata — att avkoda varje bilds fulla pixeldata medDecode()i förväg är onödigt om du bara behöver dimensioner eller färgrymd.- Skicka en explicit
formatiAddImageOptionsnär källbytes kommer från en ström eller buffer utan en pålitlig filändelse att sniffa från. - Använd
Document.Optimize({ images: { dpi, quality } })för att krympa ett dokument med många bilder, snarare än att manuellt avkoda och återlägga varje bild. Page.AddImage()s rektangel sätter den placerade storleken direkt — skala målrektangeln till källbildens egna bildförhållande för att undvika att den sträcks.
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
| Bild visas sträckt eller klämd | Målet rect som skickas till AddImage() matchar inte källbildens bildförhållande | Beräkna rektangelns bredd/höjd utifrån källbildens egna dimensioner |
Page.AddImage() placerar fel format | Bildbytesformatet kunde inte identifieras på ett tillförlitligt sätt | Skicka en explicit format i AddImageOptions |
| Dokumentet är mycket större än förväntat efter att ha lagt till bilder | Bilderna bäddades in i full upplösning och kvalitet | Anropa Document.Optimize({ images: { dpi, quality } }) för att minska upplösningen och återkoda |
FAQ
Hur placerar jag en bild på en sida?
Anropa page.AddImage(imageBytes, rect), där rect är en [x0, y0, x1, y1] rektangel i sidrymdspunkter.
Hur listar jag bilderna som redan finns på en sida utan att avkoda dem?
Läs page.Images — en ImageInfo[] som exponerar Width, Height, ColorSpace och Filter för varje bild utan att avkoda pixeldata.
Kan jag minska filstorleken på ett dokument genom att komprimera dess bilder?
Ja — anropa Document.Optimize({ images: { dpi, quality } }), som nedskaladar och återkodar inbäddade bilder som en del av ett dokumentomfattande optimeringspass.
Hur skiljer sig inbäddning av en bild från att rendera en sida till en bild?
Page.AddImage() placerar rasterbildbytes på en befintlig sida. Page.ToImage() (se Conversion) gör det omvända — renderar hela sidan till PNG-byte.
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
Page.AddImage() | Placera bildbytes i en rektangel på sidan |
AddImageOptions | Alternativ för AddImage(): opacity, format, tag, layer |
Page.Images | Varje bild som redan finns på sidan, som metadata-endast ImageInfo[] |
ImageInfo.Decode() / Replace() / Remove() | Läs pixeldata, byt in nya byte eller ta bort en bild |
Document.Optimize() | Minska filstorleken i hela dokumentet, eventuellt genom att nedskala bilder via images: { dpi, quality } |