Resources
Resources
Un PsdImage cargado expone sus bloques de recursos de imagen — entradas de estilo metadatos como cuadrículas, guías y cargas útiles de perfiles ICC — a través de dos vistas de solo lectura, además de un resumen separado para paletas de colores indexados.
Listado de bloques de recursos
PsdImage.image_resources devuelve un PreservedResourceBlock por recurso, con el ID de recurso bruto, el nombre y el tamaño en bytes:
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 devuelve un resumen PsdResourceInfo separado por recurso, añadiendo una clasificación kind — en esta compilación FOSS kind es siempre PsdResourceKind.UNKNOWN, ya que el analizador de recursos de esta compilación no decodifica IDs de recursos específicos en propiedades semánticas.
Reconociendo IDs de recursos conocidos
Dado que kind no se resuelve semánticamente, reconoce un recurso específico comparando block.id con las constantes en ImageResourceIds:
for block in image.image_resources:
if block.id == ImageResourceIds.ICC_PROFILE:
print(f"Found an ICC profile resource ({block.data_size} bytes)")Leyendo una paleta de colores indexada
Si los datos de color del documento están basados en una paleta, PsdImage.indexed_palette devuelve sus entradas:
palette = image.indexed_palette
if palette is not None:
print(f"Palette entries: {len(palette.entries)}")Consejos y mejores prácticas
PsdImage.image_resources’ getter funciona para listar recursos, pero su setter lanzaNotSupportedException— los recursos son de solo lectura en esta compilación FOSS.PsdImage.has_icc_profile,is_icc_profile_untaggedyglobal_angleson valores de marcador de posición fijos en esta compilación FOSS (siempreFalse,Noney0respectivamente) sin importar el contenido real del documento cargado — use el patrón de comparación de ID de recurso anterior si necesita detectar estos recursos por sí mismo.PreservedResourceBlock.save()lanzaNotImplementedErrorsi se llama directamente — los recursos se procesan automáticamente en ciclo completo cuando llama aimage.save()sobre el documento completo.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
image.indexed_palette es None | El tipo de datos de color del documento no es INDEXED_PALETTE | Sólo los documentos de color indexado llevan una paleta |
Configuración NotSupportedException image.image_resources | El setter no es compatible con esta compilación FOSS | Trate image_resources como de solo lectura |
Nunca cambie has_icc_profile / is_icc_profile_untagged / global_angle | Estas 3 propiedades son stubs de marcadores de posición codificados en esta compilación FOSS | Compare block.id con ImageResourceIds en su lugar (ver arriba) |
FAQ
¿Cuál es la diferencia entre image_resources y resources?
Ambos enumeran los mismos bloques de recursos subyacentes, pero como diferentes tipos de objeto: image_resources devuelve objetos PreservedResourceBlock (ID/nombre/tamaño sin procesar, usados para round-tripping), mientras que resources devuelve resúmenes PsdResourceInfo (añade una clasificación kind, actualmente siempre UNKNOWN).
¿Puedo modificar o eliminar un recurso de imagen?
No — el setter de image_resources lanza NotSupportedException, y PreservedResourceBlock.save() lanza NotImplementedError si se llama directamente. Los recursos son de solo lectura en esta compilación FOSS.
API Reference Resumen
| Clase/Método | Descripción |
|---|---|
PsdImage.image_resources | Bloques de recurso sin procesar (PreservedResourceBlock, de solo lectura) |
PsdImage.resources | Resumen de recursos (PsdResourceInfo, kind siempre UNKNOWN) |
PsdImage.indexed_palette | Resumen de la paleta de colores indexada, cuando está presente |
ImageResourceIds | Constantes de ID de recurso conocidas para comparar con resource_id/id |