소개
Aspose.PSD FOSS for Python는 소수의 클래스 집합을 통해 PSD 및 PSB 문서를 로드하고, 검사하고, 저장합니다. 이 게시물은 소개 게시물에서 깊이 다루지 않았던 핵심 API의 일부를 살펴봅니다: Image와 PsdImage이 서로 어떻게 연관되는지, 라이브러리 전반에 사용되는 기하학 값 유형, 그리고 라이브러리가 로드 및 저장 오류를 보고하는 방법.
포함 내용
이미지 및 PsdImage
Image은 최소한의 추상 기반 클래스입니다: 이것은 load()만 정의하며, 이는 입력을 검사하고 구체적인 하위 클래스를 반환합니다 — PSD/PSB 입력의 경우, 그 하위 클래스는 PsdImage입니다. 전체 문서 표면 — color_mode, version, layers, compression, bits_per_channel, size 등 — 은 PsdImage 자체에 존재하며, Image 기반에 존재하지 않습니다.
from aspose_psd_foss.image import Image
from aspose_psd_foss.psdimage import PsdImage
with Image.load("input.psd") as image:
assert isinstance(image, PsdImage)
print(f"ColorMode: {image.color_mode}, Version: {image.version}")
print(f"Size: {image.size}, Layers: {image.layer_count}")
기하학 값 유형
Point, Size, Rectangle, 및 RectangleF은 API 전반에 걸쳐 좌표와 크기에 사용되는 값 유형입니다 — Layer.bounds는 Rectangle이며, PsdImage.size는 Size입니다. Rectangle은 실제 기하학 메서드를 포함합니다: contains(), intersect_rect(), union_rect(), inflate(), from_left_top_right_bottom() 등.
from aspose_psd_foss.rectangle import Rectangle
layer_bounds = image.layers[0].bounds
fully_inside = layer_bounds.contains(Rectangle(0, 0, 10, 10))
overlap = Rectangle.intersect_rect(layer_bounds, Rectangle(0, 0, 100, 100))
print(f"Contains (0,0,10,10): {fully_inside}, overlap: {overlap}")
리소스 블록 및 예외
PsdImage.image_resources은(는) 파싱된 ResourceBlock 객체 목록을 반환합니다 — 각각은 id, name, data_size, 그리고 signature를 노출합니다. 이 FOSS 빌드에서는 image_resources, global_layer_resources, active_layer, 및 has_transparency_data를 읽을 수는 있지만 재할당할 수는 없습니다 — 각 객체에는 호출될 경우 NotSupportedException을 발생시키는 setter가 있으므로 일반 속성처럼 보이더라도 읽기 전용으로 간주하십시오.
로드 및 저장 오류는 두 개의 전용 예외 유형으로 나타납니다: 문서를 파싱할 수 없을 때는 PsdLoadException, 문서를 다시 쓸 수 없을 때는 PsdSaveException.
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException
try:
with PsdImage.load("input.psd") as image:
for resource in image.image_resources:
print(f"Resource {resource.id}: {resource.name} ({resource.data_size} bytes)")
except PsdLoadException as ex:
print(f"Failed to load input.psd: {ex}")
빠른 시작
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATHfrom aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException
try:
with PsdImage.load("input.psd") as image:
print(f"Size: {image.size}, ColorMode: {image.color_mode}")
print(f"ImageResources: {image.resource_count}")
except PsdLoadException as ex:
print(f"Load failed: {ex}")
지원되는 포맷
| 형식 | 확장자 | 읽기 | 쓰기 |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
오픈 소스 및 라이선스
Aspose.PSD FOSS for Python은 MIT 라이선스를 가지고 있으며, 로열티 없이 상업 제품에 사용할 수 있고, 평가용 워터마크나 사용 제한이 없습니다.
이 라이브러리는 서드파티 네이티브 의존성이 전혀 없으며 — 실행 시에는 Python 표준 라이브러리만 필요합니다.