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ů:
- Použij Document.get_child_nodes metoda výběru všech Shape uzly.
- Proniká skrz výsledné kolekce uzlů.
- Zkontroluj to. Shape.has_image Booleanský majetek.
- Extrahování obrazových dat pomocí Shape.image_data majetek.
- Uložit obrazová data do souboru.
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í: