Wie man Bildmetadaten aus OneNote in Python liest

Wie man Bildmetadaten aus OneNote in Python liest

Jeder Image Node in einem OneNote-Dokument trägt Metadaten neben den Rohpixelbyte: der ursprüngliche Dateiname, Anzeigemaße (Breite und Höhe in Punkten), alternativer Text für die Zugänglichkeit und optional eine Hyperlink URL, wenn das Bild verknüpft wurde. Aspose.Note FOSS for Python stellt alle diese Felder durch die Image - Ich bin in der Klasse.


Voraussetzungen für die Durchführung der Maßnahmen

pip install aspose-note

Bild-Eigenschaften

Immobilien und VermögenswerteTyp derBeschreibung
img.BytesbytesSchreiben Sie auf Festplatte mit 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]Die mit diesem Bild verbundenen OneNote-Tags (Sternchen, Kontrollkästchen usw.).

Schritt 1: Laden Sie das Dokument und finden Sie Bilder

from aspose.note import Document, Image

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

Schritt 2: Metadaten für jedes Bild lesen

Alle Nullfelder mit is not None vor der Anwendung:

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

Vollständiges Beispiel: Bilder mit Metadaten-Bericht speichern

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

Bilder nach Eigenschaften filtern

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

Bilder mit Alt-Text

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

Anmerkungen

  • img.Bytes ist immer vorhanden (Rücksendungen) b"" für unlesbare Bilder, niemals None) Überprüfung len(img.Bytes) > 0 bevor du ihn gerettet hast.
  • img.AlternativeTextTitle kann sein. None Wenn das Quelldokument keinen Titel angibt, wird die Verwendung von img.AlternativeTextDescription als Rückfall.
  • Die Abmessungen sind in Punkte (1 Punkt = 1/72 Zoll), die PowerPoint- und PDF-Konventionen entsprechen.

Siehe auch:

 Deutsch