Giới thiệu

Aspose.PSD FOSS cho Python tải, kiểm tra và lưu tài liệu PSD và PSB thông qua một tập hợp nhỏ các lớp. Bài viết này xem xét các phần của API cốt lõi mà bài viết giới thiệu chưa đề cập sâu: cách Image và PsdImage liên quan với nhau, các kiểu giá trị hình học được sử dụng trong toàn bộ thư viện, và cách thư viện báo cáo lỗi tải và lưu.


Những gì được bao gồm

Hình ảnh và PsdImage

Image là một lớp cơ sở trừu tượng tối thiểu: nó chỉ định nghĩa load(), thứ kiểm tra đầu vào và trả về một lớp con cụ thể — đối với đầu vào PSD/PSB, lớp con đó là PsdImage. Toàn bộ bề mặt tài liệu — color_mode, version, layers, compression, bits_per_channel, size, và hơn nữa — tồn tại trên PsdImage tự nó, không phải trên cơ sở 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}")

Các kiểu giá trị hình học

Point, Size, Rectangle, và RectangleF là các kiểu giá trị được sử dụng cho tọa độ và kích thước trên toàn bộ API — Layer.bounds là một Rectangle, và PsdImage.size là một Size. Rectangle chứa các phương thức hình học thực: contains(), intersect_rect(), union_rect(), inflate(), và from_left_top_right_bottom(), trong số những thứ khác.

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

Các khối tài nguyên và ngoại lệ

PsdImage.image_resources trả về danh sách đã phân tích của các đối tượng ResourceBlock — mỗi đối tượng cung cấp id, name, data_size, và signature. Trong bản dựng FOSS này, image_resources, global_layer_resources, active_layer, và has_transparency_data có thể được đọc nhưng không thể gán lại — mỗi cái có một setter gây ra NotSupportedException nếu được gọi, vì vậy hãy xem chúng như chỉ đọc mặc dù chúng xuất hiện như các thuộc tính thông thường.

Lỗi tải và lưu xuất hiện dưới dạng hai loại ngoại lệ riêng biệt: PsdLoadException khi tài liệu không thể được phân tích, và PsdSaveException khi tài liệu không thể được ghi lại.

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

Bắt đầu nhanh

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:$PYTHONPATH
from 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}")

Các định dạng được hỗ trợ

Định dạngPhần mở rộngĐọcGhi
PSDpsd✓✓
PSBpsb✓✓

Mã nguồn mở & Giấy phép

Aspose.PSD FOSS cho Python được cấp phép MIT và có thể được sử dụng trong các sản phẩm thương mại mà không có phí bản quyền, không có dấu watermark đánh giá hay giới hạn sử dụng.

Thư viện không có bất kỳ phụ thuộc gốc của bên thứ ba nào — chỉ cần thư viện chuẩn Python tại thời gian chạy.


Bắt đầu

Tài nguyên liên quan