كيفية قراءة بيانات الصورة من OneNote في Python

كيفية قراءة بيانات الصورة من OneNote في Python

كل واحد منهم Image النقاط في وثيقة OneNote تحمل البيانات الميتا جنبا إلى جنب مع بايتات البكسل الخام: الاسم الأصلي، وأبعاد العرض (العرض والارتفاع في النقطة)، والنص البديل للوصول، وعلاوة على ذلك عنوان URL الاهليرين إذا كانت الصورة مرتبطة. Image فئة .


المعايير

pip install aspose-note

صور الممتلكات

الممتلكاتنوعوصف
img.Bytesbytesبيانات الصورة الخام.كتب إلى القرص مع open(name, "wb").write(img.Bytes).
img.FileName`strNone`
img.Width`floatNone`
img.Height`floatNone`
img.AlternativeTextDescription`strNone`
img.AlternativeTextTitle`strNone`
img.HyperlinkUrl`strNone`
img.Tagslist[NoteTag]علامات OneNote المرفقة بهذه الصورة (النجمة، صندوق التحقق، إلخ).

الخطوة 1: تحميل المستند والعثور على الصور

from aspose.note import Document, Image

doc = Document("MyNotes.one")
images = doc.GetChildNodes(Image)
print(f"Found {len(images)} image(s)")

الخطوة 2: اقرأ البيانات الميتا لكل صورة

احفظ جميع الحقول الصالحة مع is not None قبل الاستخدام :

from aspose.note import Document, Image

doc = Document("MyNotes.one")

for i, img in enumerate(doc.GetChildNodes(Image), start=1):
    print(f"\nImage {i}:")
    print(f"  Filename:    {img.FileName or '(no filename)'}")
    print(f"  Size:        {img.Bytes and len(img.Bytes):,} bytes")

    if img.Width is not None and img.Height is not None:
        print(f"  Dimensions:  {img.Width:.1f} × {img.Height:.1f} pts")

    if img.AlternativeTextDescription:
        print(f"  Alt text:    {img.AlternativeTextDescription}")

    if img.HyperlinkUrl:
        print(f"  Hyperlink:   {img.HyperlinkUrl}")

    if img.Tags:
        for tag in img.Tags:
            print(f"  Tag:         {tag.Label or tag.Icon}")

مثال كامل: حفظ الصور مع تقرير الميتايدات

from pathlib import Path
from aspose.note import Document, Image

def report_and_save_images(one_path: str, out_dir: str = "images") -> None:
    doc = Document(one_path)
    images = doc.GetChildNodes(Image)
    if not images:
        print("No images found.")
        return

    out = Path(out_dir)
    out.mkdir(exist_ok=True)

    for i, img in enumerate(images, start=1):
        # Determine save name
        name = img.FileName or f"image_{i}.bin"
        dest = out / name

        # Save bytes
        dest.write_bytes(img.Bytes)

        # Report metadata
        dims = (
            f"{img.Width:.0f}×{img.Height:.0f}pts"
            if img.Width is not None and img.Height is not None
            else "unknown size"
        )
        alt = img.AlternativeTextDescription or ""
        link = img.HyperlinkUrl or ""

        print(f"  [{i}] {name}  {dims}"
              + (f"  alt='{alt}'" if alt else "")
              + (f"  url={link}" if link else ""))

    print(f"\nSaved {len(images)} image(s) to '{out_dir}/'")

report_and_save_images("MyNotes.one")

تصفية الصور بواسطة العقارات

صور مع hyperlinks

from aspose.note import Document, Image

doc = Document("MyNotes.one")
linked = [img for img in doc.GetChildNodes(Image) if img.HyperlinkUrl]
for img in linked:
    print(f"{img.FileName or 'image'}{img.HyperlinkUrl}")

صور مع النص الأصلي

from aspose.note import Document, Image

doc = Document("MyNotes.one")
with_alt = [img for img in doc.GetChildNodes(Image) if img.AlternativeTextDescription]
for img in with_alt:
    print(f"{img.FileName}: {img.AlternativeTextDescription}")

ملاحظات

  • img.Bytes يعود دائماً (السابق) b"" صور غير قابلة للقراءة، لا يُقرأ أبداً. None) التحقق من len(img.Bytes) > 0 قبل أن ينقذ.
  • img.AlternativeTextTitle قد يكون None إذا لم يحدد المستند المصدر عنوانًا.استخدام img.AlternativeTextDescription كالسقوط .
  • الأبعاد في نقطة (1 نقطة = 1/72 بوصة) ، تتطابق مع مواعيد PowerPoint و PDF.

انظر أيضا

 العربية