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:$PYTHONPATHBướ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 PsdImageBướ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.