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-noteBildeigenschaften
| Property | Type | Description |
|---|---|---|
img.Bytes | bytes | Rohbilddaten. Auf die Festplatte schreiben mit open(name, "wb").write(img.Bytes). |
img.FileName | str | None | Ursprünglicher Dateiname, gespeichert in der .one-Datei. None, falls nicht gespeichert. |
img.Width | float | None | Anzeigebreite in Punkten. None, falls nicht gespeichert. |
img.Height | float | None | Anzeigehöhe in Punkten. None, falls nicht gespeichert. |
img.AlternativeTextDescription | str | None | Barrierefreier Alternativtextkörper. None, falls nicht festgelegt. |
img.AlternativeTextTitle | str | None | Barrierefreier Alternativtexttitel. None, falls nicht festgelegt. |
img.HyperlinkUrl | str | None | URL, falls das Bild ein anklickbarer Hyperlink ist. None, falls nicht verlinkt. |
img.Tags | list[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.Bytesist immer vorhanden (gibtb""für nicht lesbare Bilder zurück, niemalsNone). Prüfen Sielen(img.Bytes) > 0vor dem Speichern.img.AlternativeTextTitlekannNonesein, wenn das Quell‑Dokument keinen Titel festlegt. Verwenden Sieimg.AlternativeTextDescriptionals Rückfall.- Die Abmessungen sind in Punkten (1 Punkt = 1/72 Zoll), entsprechend den Konventionen von PowerPoint und PDF.