Cách tải tài liệu PSD trong Python
PsdImage.load là điểm vào công cộng duy nhất để mở một tài liệu PSD/PSB — nó chấp nhận đường dẫn tệp hoặc một luồng đọc đã mở sẵn. Trình đọc cấp thấp theo từng phần mà nó ủy thác nội bộ không phải là thứ bạn gọi trực tiếp.
Hướng dẫn chi tiết 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
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadExceptionBước 3: Tải từ đường dẫn tệp
image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()Bước 4: Tải từ một Luồng
Một luồng không cần phải có khả năng tìm kiếm — load đọc toàn bộ nội dung của nó vào bộ đệm nội bộ trước khi phân tích:
with open("input.psd", "rb") as stream:
image = PsdImage.load(stream)
print(f"Loaded from stream: {image.width}x{image.height}")
image.dispose()Các vấn đề thường gặp và cách khắc phục
FileNotFoundError: File not found: .... Đường dẫn được truyền tới load không trỏ đến một tệp tin tồn tại — load checks os.path.isfile trước khi cố gắng mở nó.
PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. Luồng nguồn đã hết dữ liệu giữa quá trình phân tích (một EOFError khi đọc) — tệp tin có khả năng bị cắt ngắn.
PsdLoadException: Failed to read PSD/PSB data from the source stream. Đã xảy ra lỗi I/O khi đọc từ chính luồng, được bọc và ném lại như một PsdLoadException.
ArgumentNullException khi gọi load. load được gọi với None như đối số stream.
Câu hỏi thường gặp
Tôi có cần đưa luồng dữ liệu quay lại vị trí bắt đầu trước khi gọi load không?
Không — nếu luồng có thể di chuyển, load sẽ khôi phục vị trí gốc sau khi đọc; nếu không thể di chuyển, load vẫn hoạt động vì nó lưu trữ nội dung của luồng trong bộ nhớ nội bộ trước khi phân tích.
Sự khác biệt giữa hai lỗi FileNotFoundError/PsdLoadException ở trên là gì?
Một đường dẫn tệp bị thiếu sẽ kích hoạt lỗi tiêu chuẩn FileNotFoundError trước khi bất kỳ quá trình phân tích nào bắt đầu. A PsdLoadException thay vì có nghĩa là một tệp (hoặc stream) đã được tìm thấy và mở, nhưng dữ liệu PSD/PSB bị cắt ngắn, hỏng, hoặc không thể đọc được sau khi quá trình phân tích bắt đầu — xem thêm Troubleshooting cho các vấn đề liên quan đến phiên bản và ranh giới PsdLoadException các biến thể.