Práce s obrázky

Aspose.Words umožňuje uživatelům pracovat s obrazy velmi flexibilním způsobem. V tomto článku můžete prozkoumat pouze některé možnosti práce s obrázky.

Vkládání obrázku

DocumentBuilder poskytuje několik přetížení insert_image metoda, která umožňuje vložit inline nebo plovoucí obraz. Pokud je obraz EMF nebo WMF metafile, bude vložen do dokumentu ve formátu metafile. Všechny ostatní obrázky budou uloženy ve formátu PNG. • insert_image metoda může použít obrázky z různých zdrojů:

  • Ze složky nebo URL průchodem parametru řetězce
  • Z potoka průchodem Stream parametr
  • Z pole byte zadáním parametru byte pole

Pro každý z insert_image metody, existují další přetížení, které vám umožní vložit obrázek s těmito možnostmi:

  • Inline nebo plovoucí na konkrétní pozici, například, insert_image
  • Procentní stupnice nebo vlastní velikost, dále DocumentBuilder.insert_image metoda vrací a Shape objekt, který byl právě vytvořen a vložen, takže můžete dále upravovat vlastnosti Shape

Vložení inline obrazu

Pošlete jeden řetězec představující soubor, který obsahuje obrázek do insert_image vložit obrázek do dokumentu jako inline grafiku.

Následující příklad kódu ukazuje, jak vložit inline obrázek na pozici kurzoru do dokumentu:

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

Vkládání plovoucího (Rozhodně umístěného) obrazu

Následující příklad kódu ukazuje, jak vložit plovoucí obrázek ze souboru nebo URL ve stanovené poloze a velikosti:

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

Jak extrahovat obrázky z dokumentu

Všechny obrázky jsou uloženy uvnitř Shape a Document. Chcete-li získat všechny obrázky nebo obrázky, které mají specifický typ z dokumentu, postupujte podle těchto kroků:

Následující příklad kódu ukazuje, jak extrahovat obrázky z dokumentu a uložit je jako soubory:

Můžete si stáhnout soubor šablony tohoto příkladu z Tady.

Jak vložit čárový kód na každou stránku dokumentu

Tento příklad ukazuje, že můžete přidat stejné nebo různé čárové kódy na všechny nebo konkrétní stránky dokumentu Word. Neexistuje žádný přímý způsob, jak přidat čárových kódů na všech stránkách dokumentu, ale můžete použít move_to_section, move_to_header_footer a insert_image metody pro přesun do libovolné sekce nebo hlaviček/noha a vložte obrázky čárového kódu, jak je vidět v následujícím kódu.

Následující příklad kódu Vloží obrázek čárového kódu na každou stránku dokumentu.

Zamknout Aspect poměr obrázku

Poměr stran geometrického tvaru je poměr jeho velikostí v různých rozměrech. Můžete zamknout poměr stran obrazu pomocí aspect_ratio_locked. Výchozí hodnota poměru stran tvaru závisí na ShapeType. Je. True místo ShapeType.IMAGE a False pro jiné typy tvarů.

Následující příklad kódu ukazuje, jak pracovat s poměrem stran:

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

Jak získat skutečné hranice tvaru v bodech

Pokud chcete skutečný ohraničovací box tvaru vykreslený na stránce, můžete toho dosáhnout pomocí bounds_in_points majetek.

Následující příklad kódu ukazuje, jak používat tuto vlastnost:

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

Obrázky plodin

Ořezání obrazu se obvykle týká odstranění nežádoucích vnějších částí obrazu, které pomohou zlepšit rámování. Používá se také k odstranění některých částí obrazu pro zvýšení zaměření na určitou oblast.

Následující příklad kódu ukazuje, jak toho dosáhnout pomocí 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))

Ukládání obrázků jako WMF

Aspose.Words poskytuje funkce pro uložení všech dostupných obrázků v dokumentu do WMF formát při převodu DOCX na RTF.

Následující příklad kódu ukazuje, jak uložit obrázky jako WMF s možností RTF uložení: