Come leggere i metadati delle immagini da OneNote in Python
Ogni Image Il nodo in un documento OneNote contiene metadati accanto ai byte pixel grezzi: il nome file originale, le dimensioni di visualizzazione (larghezza e altezza in punti), il testo alternativo per l’accessibilità e, facoltativamente, un URL di collegamento ipertestuale se l’immagine era collegata. Aspose.Note FOSS per Python espone tutti questi campi attraverso il Image classe.
Prerequisiti
pip install aspose-noteProprietà dell’immagine
| Proprietà | Tipo | Descrizione |
|---|---|---|
img.Bytes | bytes | Dati immagine grezzi. Scrivi su disco con 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] | Tag di OneNote allegati a questa immagine (stella, casella di controllo, ecc.). |
Passo 1: Carica il documento e trova le immagini
from aspose.note import Document, Image
doc = Document("MyNotes.one")
images = doc.GetChildNodes(Image)
print(f"Found {len(images)} image(s)")Passo 2: Leggi i metadati per ogni immagine
Proteggi tutti i campi nullable con is not None prima dell’uso:
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}")Esempio completo: salva le immagini con rapporto sui metadati
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")Filtra le immagini per proprietà
Immagini con collegamenti ipertestuali
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}")Immagini con testo alternativo
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}")Note
img.Bytesè sempre presente (restituisceb""per immagini illeggibili, maiNone). Controllalen(img.Bytes) > 0prima di salvare.img.AlternativeTextTitlepuò essereNonese il documento sorgente non imposta un titolo. Usaimg.AlternativeTextDescriptioncome alternativa.- Le dimensioni sono in punti (1 punto = 1/72 di pollice), corrispondente alle convenzioni di PowerPoint e PDF.