---
title: "Python에서 이미지 작업하기"
---

Aspose.Words를 사용하면 사용자는 매우 유연한 방식으로 이미지 작업을 할 수 있습니다. 이 기사에서는 이미지 작업의 가능성 중 일부만 살펴보겠습니다.

## 이미지 삽입

[DocumentBuilder](https://reference.aspose.com/words/python-net/aspose.words/documentbuilder/)는 인라인 또는 플로팅 이미지를 삽입할 수 있는 [insert_image](https://reference.aspose.com/words/python-net/aspose.words/documentbuilder/insert_image/) 메서드의 여러 오버로드를 제공합니다. 이미지가 EMF 또는 WMF 메타파일인 경우 메타파일 형식으로 문서에 삽입됩니다. 다른 모든 이미지는 PNG 형식으로 저장됩니다. **insert_image** 메서드는 다양한 소스의 이미지를 사용할 수 있습니다

- 문자열 매개변수를 전달하여 파일 또는 `URL`에서
- `Stream` 매개변수를 전달하여 스트림에서
- 바이트 배열 매개변수를 전달하여 바이트 배열에서

각 **insert_image** 메서드에는 다음 옵션을 사용하여 이미지를 삽입할 수 있는 추가 오버로드가 있습니다
- 특정 위치에서 인라인 또는 플로팅(예: **insert_image**)
- 백분율 비율 또는 사용자 정의 크기 또한 [DocumentBuilder.insert_image](https://reference.aspose.com/words/python-net/aspose.words/documentbuilder/insert_image/) 메서드는 방금 생성되어 삽입된 [Shape](https://reference.aspose.com/words/python-net/aspose.words.drawing/shape/) 개체를 반환하므로 [Shape](https://reference.aspose.com/words/python-net/aspose.words.drawing/shape/)의 속성을 추가로 수정할 수 있습니다

### 인라인 이미지 삽입

이미지가 포함된 파일을 나타내는 단일 문자열을 [insert_image](https://reference.aspose.com/words/python-net/aspose.words/documentbuilder/insert_image/)에 전달하여 이미지를 인라인 그래픽으로 문서에 삽입합니다.

다음 코드 예제에서는 문서의 커서 위치에 인라인 이미지를 삽입하는 방법을 보여줍니다

```python
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`의 부동 이미지를 지정된 위치와 크기에 삽입하는 방법을 보여줍니다

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

## 문서에서 이미지를 추출하는 방법

모든 이미지는 [Document](https://reference.aspose.com/words/python-net/aspose.words/document/)의 [Shape](https://reference.aspose.com/words/python-net/aspose.words.drawing/shape/) 노드 내부에 저장됩니다. 문서에서 모든 이미지 또는 특정 유형의 이미지를 추출하려면 다음 단계를 따르십시오

- 모든 [Shape](https://reference.aspose.com/words/python-net/aspose.words.drawing/shape/) 노드를 선택하려면 [Document.get_child_nodes](https://reference.aspose.com/words/python-net/aspose.words/compositenode/get_child_nodes/) 방법을 사용하십시오.
- 결과 노드 컬렉션을 반복합니다.
- [Shape.has_image](https://reference.aspose.com/words/python-net/aspose.words.drawing/shape/has_image/) 부울 속성을 확인하세요.
- [Shape.image_data](https://reference.aspose.com/words/python-net/aspose.words.drawing/shape/image_data/) 속성을 이용하여 이미지 데이터를 추출합니다.
- 이미지 데이터를 파일로 저장합니다.

다음 코드 예제에서는 문서에서 이미지를 추출하여 파일로 저장하는 방법을 보여줍니다

[여기](https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET/blob/master/Examples/Data/Images.docx)에서 이 예제의 템플릿 파일을 다운로드할 수 있습니다.

{{< gist "aspose-words-gists" "e9d8f984dac599756ccb4a64b8c79768" "Examples-DocsExamples-DocsExamples-Programming with Documents-Contents Management-extract_content-ExtractImagesToFiles.py" >}}

```

[Aspose.Words GitHub](https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET/blob/master/Examples/Data/Images.docx)에서 이 예제의 샘플 파일을 다운로드할 수 있습니다.

```

## 문서의 각 페이지에 바코드를 삽입하는 방법

이 예에서는 Word 문서의 전체 또는 특정 페이지에 동일하거나 다른 바코드를 추가하는 방법을 보여줍니다. 문서의 모든 페이지에 바코드를 직접 추가할 수 있는 방법은 없지만 다음 코드에서 볼 수 있듯이 [move_to_section](https://reference.aspose.com/words/python-net/aspose.words/documentbuilder/move_to_section/), [move_to_header_footer](https://reference.aspose.com/words/python-net/aspose.words/documentbuilder/move_to_header_footer/) 및 [insert_image](https://reference.aspose.com/words/python-net/aspose.words/documentbuilder/insert_image/) 방법을 사용하여 섹션이나 머리글/바닥글로 이동하고 바코드 이미지를 삽입할 수 있습니다.

다음 코드 예제는 문서의 각 페이지에 바코드 이미지를 삽입합니다.

{{< gist "aspose-words-gists" "e9d8f984dac599756ccb4a64b8c79768" "Examples-DocsExamples-DocsExamples-Programming with Documents-Working with Graphic Elements-working_with_images-InsertBarcodeImage.py" >}}

{{< gist "aspose-words-gists" "e9d8f984dac599756ccb4a64b8c79768" "Examples-DocsExamples-DocsExamples-Programming with Documents-Working with Graphic Elements-working_with_images-InsertBarcodeIntoFooter.py" >}}

## 이미지의 종횡비 잠금

기하학적 모양의 종횡비는 다양한 치수의 크기 비율입니다. [aspect_ratio_locked](https://reference.aspose.com/words/python-net/aspose.words.drawing/shapebase/aspect_ratio_locked/)를 사용하여 이미지의 가로 세로 비율을 잠글 수 있습니다. 모양의 종횡비 기본값은 [ShapeType](https://reference.aspose.com/words/python-net/aspose.words.drawing/shapetype/)에 따라 다릅니다. [ShapeType.IMAGE](https://reference.aspose.com/words/python-net/aspose.words.drawing/shapetype/#image)의 경우 `True`이고 다른 모양 유형의 경우 `False`입니다.

다음 코드 예제에서는 종횡비 작업 방법을 보여줍니다

```python
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](https://reference.aspose.com/words/python-net/aspose.words.rendering/noderendererbase/bounds_in_points/) 속성을 사용하여 이를 달성할 수 있습니다.

다음 코드 예제에서는 이 속성을 사용하는 방법을 보여줍니다

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

## 이미지 자르기

이미지 자르기는 일반적으로 프레임을 개선하는 데 도움이 되도록 이미지에서 원하지 않는 외부 부분을 제거하는 것을 의미합니다. 또한 특정 영역에 대한 초점을 높이기 위해 이미지의 일부 부분을 제거하는 데에도 사용됩니다.

다음 코드 예제는 Aspose.Words API를 사용하여 이를 달성하는 방법을 보여줍니다

```python
# 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)
```

```python
@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](https://docs.fileformat.com/image/wmf/) 형식으로 저장하는 기능을 제공합니다.

다음 코드 예제에서는 RTF 저장 옵션을 사용하여 이미지를 WMF로 저장하는 방법을 보여줍니다

{{< gist "aspose-words-gists" "e9d8f984dac599756ccb4a64b8c79768" "Examples-DocsExamples-DocsExamples-File Formats and Conversions-Save Options-working_with_rtf_save_options-SavingImagesAsWmf.py" >}}
