Kā nolasīt attēlu metadatus no OneNote Python

Kā nolasīt attēlu metadatus no OneNote Python

Katrs Image mezgls OneNote dokumentā nes metadatus kopā ar neapstrādātajiem pikseļu baitiem: sākotnējais faila nosaukums, attēla izmēri (platums un augstums punktos), alternatīvais teksts pieejamībai, un, ja nepieciešams, hipersaites URL, ja attēls bija saistīts. Aspose.Note FOSS for Python atklāj visus šos laukus caur Image klasi.


Prasības

pip install aspose-note

Attēla īpašības

ĪpašībaTipsApraksts
img.BytesbytesNeapstrādāti attēla dati. Ierakstīt diskā ar 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]OneNote birkas, kas pievienotas šim attēlam (zvaigzne, izvēles rūtiņa utt.).

Solis 1: Ielādējiet dokumentu un atrodiet attēlus

from aspose.note import Document, Image

doc = Document("MyNotes.one")
images = doc.GetChildNodes(Image)
print(f"Found {len(images)} image(s)")

Solis 2: Nolasiet metadatus katram attēlam

Aizsargājiet visus nullable laukus ar is not None pirms lietošanas:

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

Pilns piemērs: Saglabājiet attēlus ar metadatu pārskatu

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")

Filtrējiet attēlus pēc īpašības

Attēli ar hipersaitēm

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

Attēli ar alternatīvo tekstu

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

Piezīmes

  • img.Bytes vienmēr ir klātesošs (atgriež b"" neizlasāmiem attēliem, nekad None). Pārbaudiet len(img.Bytes) > 0 pirms saglabāšanas.
  • img.AlternativeTextTitle var būt None ja avota dokuments nenosaka nosaukumu. Izmantojiet img.AlternativeTextDescription kā rezerves variantu.
  • Mēri ir punktos (1 punkts = 1/72 collas), atbilst PowerPoint un PDF konvencijām.

Skatīt arī

 Latviešu