Werken met afbeeldingen
Aspose.Words stelt gebruikers in staat om met beelden te werken op een zeer flexibele manier. In dit artikel kunt u slechts enkele mogelijkheden verkennen om met beelden te werken.
Een afbeelding invoegen
DocumentBuilder zorgt voor meerdere overbelasting van de insert_image methode waarmee u een inline of zwevend beeld kunt invoegen. Als de afbeelding een EMF- of WMF-metafile is, wordt deze in het document in metafile formaat ingevoegd. Alle andere afbeeldingen worden opgeslagen in PNG-formaat. De afbeelding invoegen methode kan afbeeldingen uit verschillende bronnen gebruiken:
- Van een bestand of
URL
door een tekenreeksparameter door te geven - Van een stroom door een
Stream
parameter - Van een bytearray door een bytearray parameter door te geven
Voor elk van de afbeelding invoegen methoden, er zijn verdere overbelastingen die u toelaten om een afbeelding met de volgende opties:
- Inline of drijvend op een specifieke positie, bijvoorbeeld, afbeelding invoegen
- Procentuele schaal of aangepaste grootte; DocumentBuilder.insert_image methode geeft a Shape object dat net is aangemaakt en ingevoegd zodat u de eigenschappen van de Shape
Een afbeelding invoegen
Geef een enkele tekenreeks door die een bestand weergeeft dat de afbeelding bevat insert_image de afbeelding in het document in te voegen als inline grafisch.
Het volgende voorbeeld van code laat zien hoe je een inline afbeelding op de cursorpositie in een document invoegt:
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.insert_image(docs_base.images_dir + "Logo.jpg")
doc.save(docs_base.artifacts_dir+"WorkingWithImages.document_builder_insert_inline_image.doc")
Een drijvende afbeelding invoegen (Absoluut gepositioneerd)
Het volgende voorbeeld van code laat zien hoe u een zwevende afbeelding van een bestand of URL
op een bepaalde positie en grootte:
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.insert_image(docs_base.images_dir + "Logo.jpg",
aw.drawing.RelativeHorizontalPosition.MARGIN,
100,
aw.drawing.RelativeVerticalPosition.MARGIN,
100,
200,
100,
aw.drawing.WrapType.SQUARE)
doc.save(docs_base.artifacts_dir+"WorkingWithImages.document_builder_insert_floating_image.doc")
Afbeeldingen uit een document halen
Alle afbeeldingen worden binnen opgeslagen Shape nodes in a Document. Volg deze stappen om alle afbeeldingen of afbeeldingen met een specifiek type uit het document te halen:
- Gebruik de Document.get_child_nodes methode om alles te selecteren Shape knooppunten.
- Iterate door resulterende node collecties.
- Controleer de Shape.has_image Booleaans eigendom.
- Uitpakken afbeelding gegevens met behulp van de Shape.image_data eigendom.
- Afbeeldingsgegevens opslaan in een bestand.
Het volgende voorbeeld van code laat zien hoe je afbeeldingen uit een document haalt en ze opslaat als bestanden:
U kunt het sjabloonbestand van dit voorbeeld downloaden van Hier.
Barcode op elke pagina van een document invoegen
Dit voorbeeld toont aan dat u dezelfde of verschillende barcodes toevoegt op alle of specifieke pagina’s van een Word-document. Er is geen directe manier om barcodes toe te voegen op alle pagina’s van een document, maar u kunt de move_to_section, move_to_header_footer en insert_image methoden om te verplaatsen naar een sectie of headers/voeters en voeg de barcode afbeeldingen zoals je kunt zien in de volgende code.
Het volgende codevoorbeeld Voegt een barcode afbeelding toe op elke pagina van een document.
Beeldverhouding vergrendelen
De beeldverhouding van een geometrische vorm is de verhouding van zijn afmetingen in verschillende afmetingen. U kunt de beeldverhouding vergrendelen met behulp van aspect_ratio_locked. De standaardwaarde van de beeldverhouding van de vorm hangt af van de ShapeType. Het is True
voor ShapeType.IMAGE en False
voor andere vormen.
Het volgende voorbeeld van code laat zien hoe te werken met aspect ratio:
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_image(docs_base.images_dir + "Logo.jpg")
shape.aspect_ratio_locked = False
doc.save(docs_base.artifacts_dir+"WorkingWithImages.set_aspect_ratio_locked.doc")
Hoe feitelijke grenzen van vorm in punten te krijgen
Als u wilt dat de werkelijke gebonden doos van de vorm zoals weergegeven op de pagina, kunt u dit bereiken met behulp van de bounds_in_points eigendom.
Het volgende voorbeeld van code laat zien hoe deze eigenschap te gebruiken:
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_image(docs_base.images_dir + "Logo.jpg")
shape.aspect_ratio_locked = False
print("\nGets the actual bounds of the shape in points.")
rect = shape.get_shape_renderer().bounds_in_points
print(f"{rect.x}, {rect.y}, {rect.width}, {rect.height}")
Afbeeldingen bijsnijden
Het verzamelen van een afbeelding verwijst meestal naar het verwijderen van de ongewenste buitendelen van een afbeelding om te helpen bij het verbeteren van de lijst. Het wordt ook gebruikt voor het verwijderen van sommige delen van een afbeelding om de focus op een bepaald gebied te verhogen.
Het volgende voorbeeld toont hoe dit te bereiken met behulp van Aspose.Words API:
# The path to the documents directory.
inputPath = docs_base.images_dir + "Logo.jpg"
outputPath = docs_base.artifacts_dir + "cropped_logo.jpg"
self.crop_image(inputPath,outputPath, 100, 90, 200, 200)
@staticmethod
def crop_image(inPath : str, outPath : str, left : int, top : int, width : int, height : int) :
doc = aw.Document();
builder = aw.DocumentBuilder(doc)
croppedImage = builder.insert_image(inPath)
src_width_points = croppedImage.width
src_height_points = croppedImage.height
croppedImage.width = aw.ConvertUtil.pixel_to_point(width)
croppedImage.height = aw.ConvertUtil.pixel_to_point(height)
widthRatio = croppedImage.width / src_width_points
heightRatio = croppedImage.height / src_height_points
if (widthRatio< 1) :
croppedImage.image_data.crop_right = 1 - widthRatio
if (heightRatio< 1) :
croppedImage.image_data.crop_bottom = 1 - heightRatio
leftToWidth = aw.ConvertUtil.pixel_to_point(left) / src_width_points
topToHeight = aw.ConvertUtil.pixel_to_point(top) / src_height_points
croppedImage.image_data.crop_left = leftToWidth
croppedImage.image_data.crop_right = croppedImage.image_data.crop_right - leftToWidth
croppedImage.image_data.crop_top = topToHeight
croppedImage.image_data.crop_bottom = croppedImage.image_data.crop_bottom - topToHeight
croppedImage.get_shape_renderer().save(outPath, aw.saving.ImageSaveOptions(aw.SaveFormat.JPEG))
Afbeeldingen opslaan als WMF
Aspose.Words biedt functionaliteit om alle beschikbare afbeeldingen op te slaan in een document aan WMF formaat tijdens het omzetten van DOCX naar RTF.
Het volgende voorbeeld van code laat zien hoe u afbeeldingen als WMF kunt opslaan met RTF-opslaanopties: