이미지 작업
Aspose.Words를 사용하면 사용자는 매우 유연한 방식으로 이미지 작업을 할 수 있습니다. 이 기사에서는 이미지 작업의 가능성 중 일부만 살펴보겠습니다.
이미지 삽입
DocumentBuilder는 인라인 또는 플로팅 이미지를 삽입할 수 있는 insert_image 메서드의 여러 오버로드를 제공합니다. 이미지가 EMF 또는 WMF 메타파일인 경우 메타파일 형식으로 문서에 삽입됩니다. 다른 모든 이미지는 PNG 형식으로 저장됩니다. insert_image 메서드는 다양한 소스의 이미지를 사용할 수 있습니다
- 문자열 매개변수를 전달하여 파일 또는
URL
에서 Stream
매개변수를 전달하여 스트림에서- 바이트 배열 매개변수를 전달하여 바이트 배열에서
각 insert_image 메서드에는 다음 옵션을 사용하여 이미지를 삽입할 수 있는 추가 오버로드가 있습니다
- 특정 위치에서 인라인 또는 플로팅(예: insert_image)
- 백분율 비율 또는 사용자 정의 크기 또한 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")
문서에서 이미지를 추출하는 방법
모든 이미지는 Document의 Shape 노드 내부에 저장됩니다. 문서에서 모든 이미지 또는 특정 유형의 이미지를 추출하려면 다음 단계를 따르십시오
- 모든 Shape 노드를 선택하려면 Document.get_child_nodes 방법을 사용하십시오.
- 결과 노드 컬렉션을 반복합니다.
- Shape.has_image 부울 속성을 확인하세요.
- Shape.image_data 속성을 이용하여 이미지 데이터를 추출합니다.
- 이미지 데이터를 파일로 저장합니다.
다음 코드 예제에서는 문서에서 이미지를 추출하여 파일로 저장하는 방법을 보여줍니다
여기에서 이 예제의 템플릿 파일을 다운로드할 수 있습니다.
문서의 각 페이지에 바코드를 삽입하는 방법
이 예에서는 Word 문서의 전체 또는 특정 페이지에 동일하거나 다른 바코드를 추가하는 방법을 보여줍니다. 문서의 모든 페이지에 바코드를 직접 추가할 수 있는 방법은 없지만 다음 코드에서 볼 수 있듯이 move_to_section, move_to_header_footer 및 insert_image 방법을 사용하여 섹션이나 머리글/바닥글로 이동하고 바코드 이미지를 삽입할 수 있습니다.
다음 코드 예제는 문서의 각 페이지에 바코드 이미지를 삽입합니다.
이미지의 종횡비 잠금
기하학적 모양의 종횡비는 다양한 치수의 크기 비율입니다. aspect_ratio_locked를 사용하여 이미지의 가로 세로 비율을 잠글 수 있습니다. 모양의 종횡비 기본값은 ShapeType에 따라 다릅니다. ShapeType.IMAGE의 경우 True
이고 다른 모양 유형의 경우 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}")
이미지 자르기
이미지 자르기는 일반적으로 프레임을 개선하는 데 도움이 되도록 이미지에서 원하지 않는 외부 부분을 제거하는 것을 의미합니다. 또한 특정 영역에 대한 초점을 높이기 위해 이미지의 일부 부분을 제거하는 데에도 사용됩니다.
다음 코드 예제는 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 저장 옵션을 사용하여 이미지를 WMF로 저장하는 방법을 보여줍니다