Python içinde PSD Belge Bölümlerini Nasıl İncelersiniz
Yüklenmiş bir PsdImage, bir PSD/PSB belgesinin yapısal bölümleri için yalnızca okunabilir özet nesnelerini — başlık, renk verisi bölümü, görüntü veri bölümü ve görüntü kaynakları bölümü — manuel bayt seviyesi ayrıştırma gerektirmeden ortaya çıkarır.
Adım Adım Kılavuz
Adım 1: Paketi Kurun
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:$PYTHONPATHAdım 2: Gerekli Sınıfları İçe Aktarın
from aspose_psd_foss.psdimage import PsdImageAdım 3: Başlık Bölümünü İnceleyin
PsdImage.header dökümana ait ham yapısal alanları içeren bir PsdHeader döndürür:
image = PsdImage.load("input.psd")
header = image.header
print(f"Size: {header.width}x{header.height}, channels: {header.channels}")
print(f"Bit depth: {header.bit_depth}, raw color mode: {header.color_mode}")
print(f"Is PSB: {header.is_large_document}")PsdHeader.color_mode, dosyada depolanan ham tam sayı renk modu alanını döndürür — güçlü tiplenmiş ColorModes enumuna ihtiyacınız varsa PsdImage.color_mode kullanın.
Adım 4: Renk Veri Bölümünü İncele
PsdImage.color_data_info bir PsdColorDataInfo özet döndürür; kind, (NONE, INDEXED_PALETTE, RGB_PAYLOAD, CMYK_PAYLOAD veya RAW_PRESERVED) değerine sahip bir PsdColorDataKind değeridir:
if image.has_color_mode_data:
color_info = image.color_data_info
print(f"Color data kind: {color_info.kind}, raw bytes: {color_info.raw_data_length}")
if color_info.indexed_palette is not None:
print(f"Indexed palette entries: {len(color_info.indexed_palette.entries)}")Adım 5: Görüntü Veri Bölümünü İncele
PsdImage.image_data_info, birleştirilmiş piksel verisinin nasıl kodlandığını açıklayan bir PsdImageDataInfo özet döndürür:
data_info = image.image_data_info
print(f"Compression: {image.compression}")
print(f"Data kind: {data_info.kind}, uses prediction: {data_info.uses_prediction}")
print(f"Compressed payload length: {data_info.compressed_payload_length}")data_info.kind, birleştirilmiş görüntü verisinin kendi kodlamasını açıklayan bir ImageDataKind değeridir (RAW, RLE, ZIP veya UNKNOWN) — image.compression, aynı kodlamayı ayrı CompressionMethod enumu aracılığıyla rapor eder.
Adım 6: Görüntü Kaynakları Bölümünü İncele
print(f"Has image resources: {image.has_image_resources}")
print(f"Resource count: {image.resource_count}")
for resource in image.resources:
print(f"Resource ID: {resource.resource_id}, kind: {resource.kind}")PsdImage.resources salt okunur döndürür PsdResourceInfo özetler. Ayrı PsdImage.image_resources özellik ayrıca bir getter’a sahiptir, ancak setter’ı bir hata yükseltir NotSupportedException bu FOSS derlemesinde — bkz Troubleshooting salt okunur setter’ların tam listesi için.
Yaygın Sorunlar ve Çözümler
header.color_mode eşleşmiyor image.color_mode. Bu beklenen bir durum — PsdHeader.color_mode dosyadan gelen ham tamsayı alanıdır, oysa PsdImage.color_mode güçlü tiplenmiş ColorModes onun üzerinden oluşturulan enum.
color_data_info.indexed_palette is None. Belgenin renk veri türü değil INDEXED_PALETTE — yalnızca indeksli renkli belgeler bir palet taşır.
Setting image.image_resources raises NotSupportedException. Bu ayarlayıcı bu FOSS sürümünde desteklenmiyor; şu şekilde ele al image_resources and resources salt okunur olarak.
Sık Sorulan Sorular
Üstbilgi, renk verisi veya görüntü verisi bölümlerini doğrudan değiştirebilir miyim?
Hayır — PsdHeader, PsdColorDataInfo, ColorData ve PsdImageDataInfo bu FOSS derlemesinde hepsi salt okunur özet nesneleridir. Özelliklerinin hiçbirinde genel ayarlayıcı yoktur.
image.compression ile image.image_data_kind arasındaki fark nedir?
Aynı temel kodlamayı iki ayrı enum aracılığıyla tanımlarlar: image.compression, bir CompressionMethod değeri döndürür, image.image_data_info.kind ise bir ImageDataKind değeri döndürür.