कैसे निरीक्षण करें PSD दस्तावेज़ अनुभागों को Python में

कैसे निरीक्षण करें PSD दस्तावेज़ अनुभागों को Python में

एक लोड किया गया PsdImage PSD/PSB दस्तावेज़ के संरचनात्मक सेक्शनों के लिए केवल-रीड सारांश ऑब्जेक्ट्स प्रदान करता है — हेडर, कलर डेटा सेक्शन, इमेज डेटा सेक्शन, और इमेज रिसोर्सेज सेक्शन — बिना किसी मैन्युअल बाइट-लेवल पार्सिंग की आवश्यकता के।

स्टेप-बाय-स्टेप गाइड

स्टेप 1: पैकेज इंस्टॉल करें

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

स्टेप 2: आवश्यक क्लासेस इम्पोर्ट करें

from aspose_psd_foss.psdimage import PsdImage

स्टेप 3: हेडर सेक्शन का निरीक्षण करें

PsdImage.header दस्तावेज़ के कच्चे संरचनात्मक फ़ील्ड्स के साथ एक PsdHeader लौटाता है:

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 फ़ाइल में संग्रहीत कच्चे पूर्णांक रंग मोड फ़ील्ड को लौटाता है — यदि आपको मजबूत प्रकार वाला ColorModes enum चाहिए तो PsdImage.color_mode का उपयोग करें।


चरण 4: रंग डेटा सेक्शन की जांच करें

PsdImage.color_data_info एक PsdColorDataInfo सारांश लौटाता है; kind एक PsdColorDataKind मान है (NONE, INDEXED_PALETTE, RGB_PAYLOAD, CMYK_PAYLOAD, या RAW_PRESERVED):

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)}")

चरण 5: इमेज डेटा सेक्शन की जांच करें

PsdImage.image_data_info एक PsdImageDataInfo सारांश लौटाता है जो बताता है कि मर्ज किए गए पिक्सेल डेटा को कैसे एन्कोड किया गया है:

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 एक ImageDataKind मान है (RAW, RLE, ZIP, या UNKNOWN) जो मर्ज किए गए इमेज डेटा की अपनी एन्कोडिंग का वर्णन करता है — image.compression अलग CompressionMethod enum के माध्यम से वही एन्कोडिंग रिपोर्ट करता है।


चरण 6: इमेज रिसोर्सेज सेक्शन की जांच करें

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 केवल-पढ़ने योग्य लौटाता है PsdResourceInfo सारांश। अलग PsdImage.image_resources प्रॉपर्टी में भी एक गेटर है, लेकिन उसका सेटर उठाता है NotSupportedException इस FOSS बिल्ड में — देखें Troubleshooting केवल-पढ़ने योग्य सेटर्स की पूरी सूची के लिए।

सामान्य समस्याएँ और समाधान

header.color_mode मेल नहीं खाता image.color_mode. यह अपेक्षित है — PsdHeader.color_mode फ़ाइल से कच्चा पूर्णांक फ़ील्ड है, जबकि PsdImage.color_mode स्ट्रॉन्गली टाइप्ड है ColorModes enum इस से बना है।

color_data_info.indexed_palette is None. दस्तावेज़ का color data kind नहीं है INDEXED_PALETTE — केवल indexed-color दस्तावेज़ एक पैलेट रखते हैं।

Setting image.image_resources raises NotSupportedException. यह setter इस FOSS build में समर्थित नहीं है; इसे मानें image_resources and resources को read-only माना गया है।

अक्सर पूछे जाने वाले प्रश्न

क्या मैं हेडर, रंग डेटा, या छवि डेटा सेक्शन को सीधे संशोधित कर सकता/सकती हूँ?

नहीं — PsdHeader, PsdColorDataInfo, ColorData, और PsdImageDataInfo इस FOSS बिल्ड में सभी केवल-पढ़ने योग्य सारांश ऑब्जेक्ट हैं। उनके किसी भी प्रॉपर्टी पर कोई सार्वजनिक सेटर्स नहीं हैं।

image.compression और image.image_data_kind के बीच क्या अंतर है?

वे दो अलग-अलग एनम के माध्यम से एक ही मूल एन्कोडिंग का वर्णन करते हैं: image.compression एक CompressionMethod मान लौटाता है, जबकि image.image_data_info.kind एक ImageDataKind मान लौटाता है।

यह भी देखें

 हिन्दी