Wie man Bild-Metadaten aus OneNote in Python liest

Wie man Bild-Metadaten aus OneNote in Python liest

Jeder Image‑Knoten in einem OneNote‑Dokument enthält Metadaten zusammen mit den rohen Pixelbytes: den ursprünglichen Dateinamen, Anzeigeabmessungen (Breite und Höhe in Punkten), Alternativtext für Barrierefreiheit und optional eine Hyperlink‑URL, wenn das Bild verlinkt war. Aspose.Note FOSS für Python stellt alle diese Felder über die Image‑Klasse bereit.


Voraussetzungen

pip install aspose-note

Bildeigenschaften

PropertyTypeDescription
img.BytesbytesRohbilddaten. Auf die Festplatte schreiben mit open(name, "wb").write(img.Bytes).
img.FileNamestr | NoneUrsprünglicher Dateiname, gespeichert in der .one-Datei. None, falls nicht gespeichert.
img.Widthfloat | NoneAnzeige­breite in Punkten. None, falls nicht gespeichert.
img.Heightfloat | NoneAnzeige­höhe in Punkten. None, falls nicht gespeichert.
img.AlternativeTextDescriptionstr | NoneBarrierefreier Alternativtextkörper. None, falls nicht festgelegt.
img.AlternativeTextTitlestr | NoneBarrierefreier Alternativtexttitel. None, falls nicht festgelegt.
img.HyperlinkUrlstr | NoneURL, falls das Bild ein anklickbarer Hyperlink ist. None, falls nicht verlinkt.
img.Tagslist[NoteTag]OneNote-Tags, die diesem Bild zugeordnet sind (Stern, Kontrollkästchen usw.).

Schritt 1: Dokument laden und Bilder finden

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

Schützen Sie alle nullable Felder mit is not None vor der Verwendung:

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

Hinweise

  • img.Bytes ist immer vorhanden (gibt b"" für nicht lesbare Bilder zurück, niemals None). Prüfen Sie len(img.Bytes) > 0 vor dem Speichern.
  • img.AlternativeTextTitle kann None sein, wenn das Quell‑Dokument keinen Titel festlegt. Verwenden Sie img.AlternativeTextDescription als Rückfall.
  • Die Abmessungen sind in Punkten (1 Punkt = 1/72 Zoll), entsprechend den Konventionen von PowerPoint und PDF.

Siehe auch

 Deutsch