Resources
Resources
Một PsdImage đã tải sẽ hiển thị các khối tài nguyên hình ảnh của nó — các mục kiểu siêu dữ liệu như lưới, hướng dẫn và dữ liệu ICC profile — thông qua hai chế độ xem chỉ đọc, cộng với một bản tóm tắt riêng cho các bảng màu được lập chỉ mục.
Liệt kê các Khối Tài Nguyên
PsdImage.image_resources trả về một PreservedResourceBlock cho mỗi tài nguyên, bao gồm ID tài nguyên thô, tên và kích thước byte:
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.resources.imageresourceids import ImageResourceIds
image = PsdImage.load(input_path)
for block in image.image_resources:
print(f"ID: {block.id}, name: {block.name!r}, size: {block.size} bytes")PsdImage.resources trả về một bản tóm tắt PsdResourceInfo riêng cho mỗi tài nguyên, thêm một phân loại kind — trong bản dựng FOSS này kind luôn luôn là PsdResourceKind.UNKNOWN, vì bộ phân tích tài nguyên của bản dựng này không giải mã các ID tài nguyên cụ thể thành các thuộc tính ngữ nghĩa.
Nhận dạng các ID Tài Nguyên đã biết
Vì kind không được giải quyết theo ngữ nghĩa, hãy nhận dạng một tài nguyên cụ thể bằng cách so sánh block.id với các hằng số trong ImageResourceIds:
for block in image.image_resources:
if block.id == ImageResourceIds.ICC_PROFILE:
print(f"Found an ICC profile resource ({block.data_size} bytes)")Đọc bảng màu chỉ mục
Nếu dữ liệu màu của tài liệu dựa trên palette, PsdImage.indexed_palette trả về các mục của nó:
palette = image.indexed_palette
if palette is not None:
print(f"Palette entries: {len(palette.entries)}")Mẹo và Thực tiễn tốt nhất
- Getter của
PsdImage.image_resourceshoạt động để liệt kê tài nguyên, nhưng setter của nó gây raNotSupportedException— tài nguyên chỉ có thể đọc trong bản dựng FOSS này. PsdImage.has_icc_profile,is_icc_profile_untagged, vàglobal_anglelà các giá trị placeholder cố định trong bản dựng FOSS này (luôn luôn làFalse,None, và0tương ứng) bất kể nội dung thực tế của tài liệu đã tải — hãy sử dụng mẫu so sánh resource-ID ở trên nếu bạn cần tự phát hiện các tài nguyên này.PreservedResourceBlock.save()gây raNotImplementedErrornếu được gọi trực tiếp — tài nguyên sẽ tự động vòng tròn khi bạn gọiimage.save()trên toàn bộ tài liệu.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Khắc phục |
|---|---|---|
image.indexed_palette là None | Kiểu dữ liệu màu của tài liệu không phải là INDEXED_PALETTE | Chỉ các tài liệu màu chỉ mục mới có bảng màu |
NotSupportedException cài đặt image.image_resources | Bộ thiết lập không được hỗ trợ trong bản dựng FOSS này | Xem image_resources là chỉ đọc |
has_icc_profile / is_icc_profile_untagged / global_angle không bao giờ thay đổi | Ba thuộc tính này là các phần giữ chỗ được mã cứng trong bản dựng FOSS này | So sánh block.id với ImageResourceIds thay vào đó (xem ở trên) |
FAQ
Có sự khác biệt gì giữa image_resources và resources?
Cả hai đều liệt kê các khối tài nguyên nền tảng giống nhau, nhưng dưới dạng các loại đối tượng khác nhau: image_resources trả về các đối tượng PreservedResourceBlock (ID/tên/kích thước thô, dùng cho việc vòng quay), trong khi resources trả về các bản tóm tắt PsdResourceInfo (thêm một phân loại kind, hiện tại luôn là UNKNOWN).
Tôi có thể sửa đổi hoặc xóa tài nguyên hình ảnh không?
Không — bộ thiết lập của image_resources gây ra NotSupportedException, và PreservedResourceBlock.save() gây ra NotImplementedError nếu được gọi trực tiếp. Các tài nguyên ở chế độ chỉ đọc trong bản FOSS này.
Tóm tắt API Reference
| Lớp/Phương thức | Mô tả |
|---|---|
PsdImage.image_resources | Khối tài nguyên thô (PreservedResourceBlock, chỉ đọc) |
PsdImage.resources | Tóm tắt tài nguyên (PsdResourceInfo, kind luôn UNKNOWN) |
PsdImage.indexed_palette | Tóm tắt bảng màu đã chỉ mục, nếu có |
ImageResourceIds | Các hằng số ID tài nguyên đã biết để so sánh với resource_id/id |