Come leggere i metadati delle immagini da OneNote in Python

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-note

Proprietà dell’immagine

ProprietàTipoDescrizione
img.BytesbytesDati immagine grezzi. Scrivi su disco con 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]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 (restituisce b"" per immagini illeggibili, mai None). Controlla len(img.Bytes) > 0 prima di salvare.
  • img.AlternativeTextTitle può essere None se il documento sorgente non imposta un titolo. Usa img.AlternativeTextDescription come alternativa.
  • Le dimensioni sono in punti (1 punto = 1/72 di pollice), corrispondente alle convenzioni di PowerPoint e PDF.

Vedi anche

 Italiano