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_resources hoạt động để liệt kê tài nguyên, nhưng setter của nó gây ra NotSupportedException — 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_angle là các giá trị placeholder cố định trong bản dựng FOSS này (luôn luôn là False, None, và 0 tươ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 ra NotImplementedError nếu được gọi trực tiếp — tài nguyên sẽ tự động vòng tròn khi bạn gọi image.save() trên toàn bộ tài liệu.

Các vấn đề thường gặp

Vấn đềNguyên nhânKhắc phục
image.indexed_palette là NoneKiểu dữ liệu màu của tài liệu không phải là INDEXED_PALETTEChỉ các tài liệu màu chỉ mục mới có bảng màu
NotSupportedException cài đặt image.image_resourcesBộ thiết lập không được hỗ trợ trong bản dựng FOSS nàyXem image_resources là chỉ đọc
has_icc_profile / is_icc_profile_untagged / global_angle không bao giờ thay đổiBa thuộc tính này là các phần giữ chỗ được mã cứng trong bản dựng FOSS nàySo 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ứcMô tả
PsdImage.image_resourcesKhối tài nguyên thô (PreservedResourceBlock, chỉ đọc)
PsdImage.resourcesTóm tắt tài nguyên (PsdResourceInfo, kind luôn UNKNOWN)
PsdImage.indexed_paletteTóm tắt bảng màu đã chỉ mục, nếu có
ImageResourceIdsCác hằng số ID tài nguyên đã biết để so sánh với resource_id/id

Xem thêm

 Tiếng Việt