Работа с изображениями

Aspose.Words Это позволяет пользователям работать с изображениями очень гибко. В этой статье вы можете изучить только некоторые возможности работы с изображениями.

Вставить изображение

DocumentBuilder Это приводит к нескольким перегрузкам в insert_image Способ, позволяющий вставить входящее или плавающее изображение. Если изображение является метафайлом EMF или WMF, оно будет вставлено в документ в формате метафайла. Все остальные изображения будут храниться в формате PNG. The Вставить_изображение Метод может использовать изображения из разных источников:

  • из файла или URL Пройдя струнный параметр
  • из ручья, проходя мимо Stream параметр
  • из байтового массива путем пропускания параметра байтового массива

Для каждого из них Вставить_изображение Есть дополнительные перегрузки, которые позволяют вставить изображение со следующими опциями:

  • наклонные или плавающие в определенном положении, например, Вставить_изображение
  • Процентная шкала или пользовательский размер; кроме того, DocumentBuilder.insert_image Способ возвращает Shape объект, который был только что создан и вставлен, чтобы вы могли дополнительно изменять свойства объекта. Shape

Вставить встроенное изображение

Передайте одну строку, представляющую файл, который содержит изображение для insert_image вставить изображение в документ в виде встроенной графики.

Следующий пример кода показывает, как вставить встроенное изображение в положение курсора в документ:

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

Вставить плавающее (абсолютно позиционированное) изображение

Следующий пример кода показывает, как вставить плавающее изображение из файла или URL в определенном положении и размере:

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

Как извлечь изображения из документа

Все изображения хранятся внутри Shape узлы в Document. Чтобы извлечь из документа все изображения или изображения определенного типа, выполните следующие действия:

  • Используйте Document.get_child_nodes Способ выбрать все Shape Узлы.
  • Итерировать через результирующие коллекции узлов.
  • Проверьте. Shape.has_image Булева собственность.
  • Извлекать данные изображения с помощью Shape.image_data собственность.
  • Сохранить данные изображения в файл.

Следующий пример кода показывает, как извлечь изображения из документа и сохранить их в виде файлов:

Вы можете скачать файл шаблона этого примера из здесь.

Как вставить штрих-код на каждой странице документа

Этот пример показывает, что вы добавляете одинаковые или разные штрих-коды на все или конкретные страницы документа Word. Нет прямого способа добавить штрих-коды на всех страницах документа, но вы можете использовать штрих-коды. move_to_section, move_to_header_footer и insert_image Способы перемещения в любой раздел или заголовки/футеры и вставки изображений штрих-кода, как вы можете видеть в следующем коде.

Следующий пример кода вставляет изображение штрих-кода на каждую страницу документа.

Соотношение сторон изображения

Соотношение сторон геометрической формы - это отношение ее размеров в разных размерах. Вы можете заблокировать соотношение сторон изображения с помощью aspect_ratio_locked. Значение по умолчанию отношения сторон формы зависит от ShapeType. Это True для ShapeType.IMAGE и False для других типов форм.

Следующий пример кода показывает, как работать с соотношением сторон:

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

Как получить реальные границы формы в точках

Если вы хотите, чтобы фактическая ограничительная коробка формы отображалась на странице, вы можете достичь этого, используя bounds_in_points собственность.

Следующий пример кода показывает, как использовать это свойство:

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

Изображения Crop

Обрезка изображения обычно относится к удалению нежелательных внешних частей изображения, чтобы помочь улучшить обрамление. Он также используется для удаления некоторых частей изображения, чтобы увеличить фокус на определенной области.

Следующий пример кода показывает, как достичь этого с помощью 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))

Сохранение изображений как WMF

Aspose.Words обеспечивает функциональность для сохранения всех доступных изображений в документе WMF Преобразование DOCX в RTF.

Следующий пример кода показывает, как сохранить изображения как WMF с опциями сохранения RTF: