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

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

Katrs Image mezgls OneNote dokumentā nes metadatus kopā ar neapstrādātajiem pikseļu baitiem: sākotnējais faila nosaukums, attēlojuma dimensijas (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.


Priekšnosacījumi

pip install aspose-note

Attēla īpašības

ĪpašībaTipsApraksts
img.BytesbytesNeapstrādāti attēla dati. Ierakstiet diskā, izmantojot open(name, "wb").write(img.Bytes).
img.FileNamestr | NoneOriģinālais faila nosaukums saglabāts .one failā. None, ja nav saglabāts.
img.Widthfloat | NoneAttēlojuma platums punktos. None, ja nav saglabāts.
img.Heightfloat | NoneAttēlojuma augstums punktos. None, ja nav saglabāts.
img.AlternativeTextDescriptionstr | NonePieejamības alternatīvā teksta pamatteksts. None, ja nav iestatīts.
img.AlternativeTextTitlestr | NonePieejamības alternatīvā teksta virsraksts. None, ja nav iestatīts.
img.HyperlinkUrlstr | NoneURL, ja attēls ir klikšķināma saite. None, ja nav saistīts.
img.Tagslist[NoteTag]OneNote birkas, kas pievienotas šim attēlam (zvaigzne, izvēles rūtiņa utt.).

1. solis: Ielādēt dokumentu un atrast attēlus

from aspose.note import Document, Image

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

2. solis: Nolasīt 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āt 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ēt 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āmām attēliem, nekad None). Pārbaudiet len(img.Bytes) > 0 pirms saglabāšanas.
  • img.AlternativeTextTitle var būt None, ja avota dokumentā nav iestatīts nosaukums. Izmantojiet img.AlternativeTextDescription kā rezerves variantu.
  • Izmēri ir punktos (1 punkts = 1/72 collas), kas atbilst PowerPoint un PDF konvencijām.

Skatīt arī

 Latviešu