Cách làm việc với Aspose.PSD FOSS Core API trong Python

Cách làm việc với Aspose.PSD FOSS Core API trong Python

Aspose.PSD FOSS cho Python tải và kiểm tra cấu trúc tài liệu PSD/PSB thông qua PsdImage, một lớp con của Image. Bài viết này đề cập đến việc tải tài liệu, đọc phần đầu và các tài nguyên hình ảnh, và lưu lại vào đĩa.

Hướng dẫn từng bước

Bước 1: Cài đặt gói

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

Bước 2: Nhập các lớp cần thiết

PsdImage là điểm vào được sử dụng xuyên suốt hướng dẫn này:

from aspose_psd_foss.psdimage import PsdImage

Bước 3: Tải một tài liệu PSD/PSB

PsdImage.load() mở một tài liệu từ đường dẫn tệp hoặc luồng:

from aspose_psd_foss.psdimage import PsdImage

image = PsdImage.load("input.psd")

Bước 4: Kiểm tra tiêu đề tài liệu

PsdImage hiển thị các trường tiêu đề được đọc từ tài liệu đã phân tích: width, height, bits_per_channel, color_mode (giá trị ColorModes), và compression (giá trị CompressionMethod):

print(f"{image.width}x{image.height}, {image.bits_per_channel} bpc")
print(f"Color mode: {image.color_mode}")    # e.g. ColorModes.RGB
print(f"Compression: {image.compression}")  # e.g. CompressionMethod.RLE
print(f"Flattened: {image.is_flatten}")

Các giá trị ColorModes là BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE, và LAB. Các giá trị CompressionMethod là RAW, RLE, ZIP_WITHOUT_PREDICTION, và ZIP_WITH_PREDICTION.


Bước 5: Đọc các khối tài nguyên hình ảnh

image_resources trả về các mục ResourceBlock đã phân tích của tài liệu. Mỗi khối hiển thị id, name, và size:

for resource in image.image_resources:
    print(f"Resource {resource.id} \"{resource.name}\" - {resource.size} bytes")

image_resources là chỉ đọc trong bản dựng FOSS này — việc gán giá trị cho nó sẽ gây ra NotSupportedException (xem Các hạn chế đã biết trong FAQ).


Bước 6: Lưu tài liệu

Ghi tài liệu trở lại đĩa, sau đó giải phóng các tài nguyên của hình ảnh:

image.save("output.psd")
image.dispose()

Các vấn đề thường gặp và cách khắc phục

PsdLoadException khi tải tệp. Đầu vào không phải là tài liệu PSD/PSB hợp lệ, hoặc tiêu đề của nó không vượt qua quá trình xác thực. Xác nhận tệp là tệp PSD/PSB thực sự trước khi tải.

NotSupportedException khi thiết lập image_resources or global_layer_resources. Các bộ thiết lập này không được hỗ trợ trong bản dựng FOSS này. Xem image_resources như chỉ đọc.

Câu hỏi thường gặp

Tôi có thể tải tệp PSD từ luồng thay vì từ đường dẫn tệp không?

Có — PsdImage.load() chấp nhận một chuỗi đường dẫn tệp hoặc một luồng đọc được (io.BytesIO/io.BufferedIOBase).

Liệu image_resources có bao gồm dữ liệu lớp không?

Không. image_resources giữ các khối tài nguyên cấp tài liệu (được phân tích từ phần tài nguyên hình ảnh PSD). Dữ liệu cấp lớp được đọc thông qua PsdImage.layers — xem Làm việc với các lớp.

Liệu PsdImage.version có phải là phiên bản định dạng tệp PSD không?

Không. PsdImage.version báo cáo một số phiên bản API nội bộ tương thích với Aspose.PSD (hiện tại là 6) — nó không liên quan đến việc tệp đã tải là PSD hay PSB. Trình đặt giá trị chỉ chấp nhận giá trị 6; bất kỳ giá trị nào khác sẽ gây ra ValueError.

Xem thêm

 Tiếng Việt