Lucrul cu imagini

Aspose.Words permite utilizatorilor să lucreze cu imagini într-un mod foarte flexibil. În acest articol, puteți explora doar câteva dintre posibilitățile de lucru cu imagini.

Inserarea unei imagini

DocumentBuilder oferă mai multe supraîncărcări ale metodei insert_image care vă permite să inserați o imagine inline sau plutitoare. Dacă imaginea este un metafișier EMF sau WMF, aceasta va fi inserată în document în format metafișier. Toate celelalte imagini vor fi stocate în format PNG. Metoda insert_image poate utiliza imagini din diferite surse:

  • Dintr-un fișier sau URL prin trecerea unui parametru șir
  • Dintr-un flux prin trecerea unui parametru Stream
  • Dintr-o matrice de octeți prin trecerea unui parametru de matrice de octeți

Pentru fiecare dintre metodele insert_image, există supraîncărcări suplimentare care vă permit să inserați o imagine cu următoarele opțiuni:

  • În linie sau plutind într-o anumită poziție, de exemplu, insert_image
  • Scară procentuală sau dimensiune personalizată; în plus, metoda DocumentBuilder.insert_image returnează un obiect Shape care tocmai a fost creat și inserat, astfel încât să puteți modifica în continuare proprietățile Shape

Inserarea unei imagini Inline

Treceți un singur șir reprezentând un fișier care conține imaginea la insert_image pentru a insera imaginea în document ca grafic în linie.

Următorul exemplu de cod arată cum să inserați o imagine în linie în poziția cursorului într-un document:

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")

Introducerea unei imagini Plutitoare (poziționate absolut)

Următorul exemplu de cod arată cum să inserați o imagine plutitoare dintr-un fișier sau URL la o poziție și dimensiune specificate:

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")

Cum să extrageți imagini dintr-un Document

Toate imaginile sunt stocate în interiorul Shape noduri într-un Document. Pentru a extrage din document toate imaginile sau imaginile cu un anumit tip, urmați acești pași:

Următorul exemplu de cod arată cum să extrageți imagini dintr-un document și să le salvați ca fișiere:

Puteți descărca fișierul șablon al acestui exemplu din aici.

Cum se introduce codul de bare pe fiecare pagină a unui Document

Acest exemplu vă demonstrează să adăugați aceleași sau diferite coduri de bare pe toate sau anumite pagini ale unui document Word. Nu există o modalitate directă de a adăuga coduri de bare pe toate paginile unui document, dar puteți utiliza metodele move_to_section, move_to_header_footer și insert_image pentru a vă deplasa la orice secțiune sau anteturi/subsoluri și introduceți imaginile codului de bare după cum puteți vedea în următorul cod.

Următorul exemplu de cod introduce o imagine de cod de bare pe fiecare pagină a unui document.

Blocați raportul de Aspect al imaginii

Raportul de aspect al unei forme geometrice este raportul dintre dimensiunile sale în diferite dimensiuni. Puteți bloca raportul de aspect al imaginii folosind aspect_ratio_locked. Valoarea implicită a raportului de aspect al formei depinde de ShapeType. Este True pentru ShapeType.IMAGE și False pentru alte tipuri de forme.

Următorul exemplu de cod arată cum să lucrați cu raportul de aspect:

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")

Cum să obțineți limitele reale ale formei în puncte

Dacă doriți caseta de delimitare reală a formei așa cum este redată pe pagină, puteți realiza acest lucru utilizând proprietatea bounds_in_points.

Următorul exemplu de cod arată cum să utilizați această proprietate:

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}")

Decupați Imagini

Decuparea unei imagini se referă de obicei la îndepărtarea părților exterioare nedorite ale unei imagini pentru a ajuta la îmbunătățirea încadrării. Este, de asemenea, utilizat pentru eliminarea unora dintre porțiunile unei imagini pentru a crește focalizarea pe o anumită zonă.

Următorul exemplu de cod arată cum se poate realiza acest lucru folosind 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))

Salvarea imaginilor ca WMF

Aspose.Words oferă funcționalitate pentru a salva toate imaginile disponibile într - un document WMF formatați în timp ce convertiți DOCX în RTF.

Următorul exemplu de cod arată cum să salvați imaginile ca WMF cu RTF opțiuni de salvare: