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-noteBild-Eigenschaften
| Immobilien und Vermögenswerte | Typ der | Beschreibung |
|---|---|---|
img.Bytes | bytes | Schreiben Sie auf Festplatte mit open(name, "wb").write(img.Bytes). |
img.FileName | `str | None` |
img.Width | `float | None` |
img.Height | `float | None` |
img.AlternativeTextDescription | `str | None` |
img.AlternativeTextTitle | `str | None` |
img.HyperlinkUrl | `str | None` |
img.Tags | list[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.Bytesist immer vorhanden (Rücksendungen)b""für unlesbare Bilder, niemalsNone) Überprüfunglen(img.Bytes) > 0bevor du ihn gerettet hast.img.AlternativeTextTitlekann sein.NoneWenn das Quelldokument keinen Titel angibt, wird die Verwendung vonimg.AlternativeTextDescriptionals Rückfall.- Die Abmessungen sind in Punkte (1 Punkt = 1/72 Zoll), die PowerPoint- und PDF-Konventionen entsprechen.