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

Aspose.Words дозволяє користувачам працювати з зображеннями в дуже гнучкому режимі. У статті ви можете вивчити лише деякі можливості роботи з зображеннями.

Вставка зображення

DocumentBuilder надає кілька перевантаженнях insert_image метод, який дозволяє вставляти вбудований або плаваючий образ. Якщо зображення є метафілом EMF або WMF, він буде вставлятися в документ у форматі метафайлу. Всі інші зображення будуть зберігатися в форматі PNG. Про нас вставка_зображення метод може використовувати зображення з різних джерел:

  • Від файлу або URL шляхом проходження параметра рядка
  • Від потоку шляхом проходження Stream параметр
  • Від байтного масиву шляхом проходження параметра байтного масиву

Для кожного вставка_зображення методи, є подальші перевантаження, які дозволяють вставляти зображення з такими опціями:

  • Інлайн або плавлення на певній позиції, наприклад, вставка_зображення
  • Процентна вага або користувацький розмір; далі, DocumentBuilder.insert_image метод повертає Shape об’єкт, який був просто створений і вставлений таким чином ви можете додатково змінювати властивості Shape

Вставляння Inline Зображення

Пройдіть один рядок, що представляє файл, який містить зображення 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")

Вставляння Floating (розташовується) Зображення

Приклад наступного коду показує, як вставити плаваючу зображення з файлу або 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 методи переміщення в будь-який розділ або заголовки / нижній колонтитул і вставити зображення штрих-коду, як ви можете бачити в наступному коді.

Приклад наступного коду Вставте зображення штрих-коду на кожній сторінці документа.

Lock Aspect Ratio Зображень

Співвідношення геометричної форми – співвідношення його розмірів в різних розмірах. Ви можете заблокувати співвідношення сторін зображення 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 забезпечує функціональність для збереження всіх доступних зображень в документі ВМФ Формат при перетворенні DOCX в RTF.

Приклад коду показує, як зберегти зображення як WMF з параметрами збереження RTF: