Python içinde PSD Belge Bölümlerini Nasıl İncelersiniz

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:$PYTHONPATH

Adım 2: Gerekli Sınıfları İçe Aktarın

from aspose_psd_foss.psdimage import PsdImage

Adı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.

Ayrıca Bakınız

 Türkçe