이미지를 클리핑하고 여러 형식으로 내보내는 것은 썸네일, 미리보기 또는 맞춤 자산을 만들 때 일반적인 요구 사항입니다. 이 가이드는 Aspose.Imaging for Python 및 RasterImageExporter 클래스를 사용하여 해당 작업을 수행하는 방법을 보여주며, 키워드 Python에서 이미지 클리핑 및 내보내기에 중점을 둡니다.

주요 내용

  • RasterImageExporter는 사각형을 클립하고 결과를 지원되는 모든 이미지 형식으로 저장할 수 있습니다.
  • 동일한 클립 사각형을 소스 이미지를 다시 로드하지 않고도 수십 개의 형식에서 재사용할 수 있습니다.
  • 저장된 이미지 크기를 확인하면 클립 작업이 성공했는지 확인할 수 있습니다.
  • save‑options 객체를 복제하면 형식 간 부작용을 방지할 수 있습니다.
  • 임시 라이선스를 사용하면 API를 평가하는 동안 전체 기능을 사용할 수 있습니다.

왜 이미지 클립 및 내보내기를 해야 하는가

개발자는 종종 이미지에서 단일 잘라낸 영역이 필요하지만, 해당 영역을 다양한 플랫폼용 여러 파일 형식으로 제공해야 합니다. 이 기능이 없었을 때는 각 형식마다 이미지를 로드하고, 클립하고, 저장해야 했으며, 그로 인해 I/O 및 CPU 오버헤드가 증가했습니다. RasterImageExporter는 동일한 클리핑 사각형을 모든 출력 형식에 한 번의 루프에서 적용함으로써 워크플로를 간소화하고, 시간 절약과 코드 복잡성 감소를 제공합니다.

Aspose.Imaging for Python 시작하기

먼저, Aspose.Imaging 패키지를 pip을 사용하여 설치합니다.

pip install aspose-imaging-python-net

자세한 문서는 제품 페이지를 방문하십시오. 이 라이브러리는 Python.NET을 통해 .NET 통합을 지원하는 모든 Python 환경에서 작동합니다.

여러 형식으로 이미지 자르고 내보내기

아래는 테스트 이미지 세트를 로드하고, 클리핑 사각형을 정의한 다음, 클리핑된 영역을 11가지 다른 형식으로 저장하는 완전하고 독립적인 예제입니다.

다음 예제는 사각형을 클립하고 결과를 Python을 사용하여 여러 형식으로 내보내는 방법을 보여줍니다.

import os
from aspose.imaging import Image, Rectangle
from aspose.imaging.imageoptions import *
from aspose.imaging.fileformats.tiff.enums import TiffExpectedFormat

base_dir = "testdata"
out_dir = os.path.join(base_dir, "output")

if not os.path.exists(out_dir):
    os.mkdir(out_dir)

files = [
    "decHex_16Bpp555.bmp",
    "2086.gif",
    "3.jpg",
    "1.png",
    "bi_CCITT3_2d.tif",
    "light.ico",
    "Input.jp2",
    "ExifChunk.webp",
    "0008.DCM",
    "src-base-indexed.tga",
    "BigTiff.tiff.tiff"
]

save_exts = ["bmp", "gif", "jpeg", "png", "tiff", "ico", "jp2", "webp", "dicom", "tga", "bigtiff"]
save_options = [
    BmpOptions(),
    GifOptions(),
    JpegOptions(),
    PngOptions(),
    TiffOptions(TiffExpectedFormat.TIFF_DEFLATE_RGB),
    IcoOptions(),
    Jpeg2000Options(),
    WebPOptions(),
    DicomOptions(),
    TgaOptions(),
    BigTiffOptions(TiffExpectedFormat.TIFF_DEFLATE_RGB)
]

assert len(files) == len(save_exts)
assert len(files) == len(save_options)

# Define the Clipping Rectangle: (X, Y, Width, Height)
out_rect = Rectangle(10, 15, 100, 100)
error_list = []
for file in files:
    file_path = os.path.join(base_dir, file)
    # Load the source image once
    with Image.load(file_path) as image:
        for i in range(len(save_exts)):
            out_file = os.path.join(out_dir, file + "_clipped." + save_exts[i])
            # Clone the format‑specific options and apply the clipping rectangle
            image.save(out_file, save_options[i].clone(), out_rect)
            # Verify that the saved image has the expected size
            can_remove = True
            with Image.load(out_file) as test_image:
                if out_rect.size != test_image.size:
                    can_remove = False
                    error_list.append(
                        "Sizes (exp = {0}, real = {1}) are not equal! Input file: {2}, Output file: {3}".format(
                            out_rect.size, test_image.size, file, out_file))
            if can_remove:
                os.remove(out_file)

if error_list:
    error_text = "\n".join(error_list)
    print(error_text)
    raise AssertionError(error_text)

# Clean up the Temporary Directory
os.rmdir(out_dir)

핵심 단계 설명

  1. 디렉터리 설정 – 스크립트는 임시 클립 파일을 저장하기 위해 output 폴더를 생성합니다.
  2. 파일 목록 준비 – files는 원본 이미지 이름을 보관하고, save_exts와 save_options는 각 파일을 대상 형식 및 해당 옵션 객체에 매핑합니다.
  3. 클리핑 사각형 정의 – Rectangle(10, 15, 100, 100)은 추출할 영역을 지정합니다 (x=10, y=15, width=100, height=100).
  4. 원본 이미지 로드 – Image.load(file_path)는 원본을 한 번만 열어 I/O를 줄입니다.
  5. 클리핑하여 저장 – image.save(out_file, save_options[i].clone(), out_rect)는 클립된 영역을 적절한 형식으로 기록합니다. clone() 호출은 각 형식이 독립적인 옵션 인스턴스를 갖도록 보장합니다.
  6. 출력 크기 검증 – 각 저장 후 스크립트는 출력 파일을 다시 로드하고 test_image.size가 사각형 크기와 일치하는지 확인하여 클리핑이 성공했음을 보장합니다.
  7. 정리 – 성공적으로 검증된 파일은 삭제되고, 마지막으로 임시 디렉터리가 제거됩니다.

결론

Aspose.Imaging’s RasterImageExporter를 사용하면 직사각형 영역을 한 번 클립하고 단일 패스에서 지원되는 모든 이미지 형식으로 내보낼 수 있습니다. 이 접근 방식은 중복 로딩을 줄이고 코드를 단순화하며 형식 간 일관된 출력을 보장합니다.

FAQ

  1. RasterImageExporter가 모든 형식의 이미지를 클립할 수 있나요? 예, BMP, GIF, JPEG, PNG, TIFF, ICO, JP2, WebP, DICOM, TGA 및 BigTIFF와 같은 save‑options 배열에 나열된 모든 형식에 대해 클립을 지원합니다.

  2. 저장 호출 시 출력 형식을 지정해야 합니까?
    형식은 제공한 파일 확장자를 기반으로 추론됩니다; 일치하는 save‑options 객체가 형식별 설정을 정의합니다.

  3. 클리핑 사각형이 원본 이미지 크기를 초과하면 어떻게 됩니까? ArgumentOutOfRangeException이 발생하므로 저장하기 전에 사각형을 image.size와 비교하여 검증하십시오.

  4. 각 반복마다 저장 옵션을 복제하는 것이 필요합니까? 복제는 각 형식에 대해 새로운 옵션 인스턴스를 생성하여 동일한 객체를 재사용할 때 발생할 수 있는 부작용을 방지합니다.

  5. 클립된 이미지가 예상된 차원을 가지고 있는지 어떻게 확인할 수 있나요? 저장된 파일을 Image.load 로 다시 로드하고, 해당 파일의 .size 속성을 원본 Rectangle.size와 비교하십시오.

  6. 클리핑에 상업 라이선스가 필요합니까? 클리핑은 임시 라이선스로 작동합니다; 프로덕션 사용을 위해 임시‑라이선스 페이지를 통해 정식 라이선스를 얻으세요.

무료 라이선스를 받고 더 알아보기

전체 기능을 실험하려면 임시 라이선스를 요청하십시오: https://purchase.aspose.com/temporary-license/

관련 항목