Kaip nuskaityti paveikslėlio metaduomenis iš OneNote naudojant Python

Kaip nuskaityti paveikslėlio metaduomenis iš OneNote naudojant Python

Kiekvienas Image mazgas OneNote dokumente neša metaduomenis kartu su neapdorotais pikselių baitais: originalų failo pavadinimą, rodymo matmenis (plotį ir aukštį taškais), alternatyvų tekstą prieinamumui ir, jei paveikslėlis buvo susietas, pasirenkamą hipersaito URL. Aspose.Note FOSS for Python atskleidžia visus šiuos laukus per Image klasę.


Būtinosios sąlygos

pip install aspose-note

Vaizdo savybės

SavybėTipasAprašymas
img.BytesbytesNeapdoroti paveikslėlio duomenys. Įrašykite į diską naudodami open(name, "wb").write(img.Bytes).
img.FileNamestr | NoneOriginalus failo pavadinimas saugomas .one faile. None jei nesaugomas.
img.Widthfloat | NoneRodymo plotis taškais. None jei nesaugomas.
img.Heightfloat | NoneRodymo aukštis taškais. None jei nesaugomas.
img.AlternativeTextDescriptionstr | NonePrieinamumo alternatyvaus teksto turinys. None jei nenustatyta.
img.AlternativeTextTitlestr | NonePrieinamumo alternatyvaus teksto pavadinimas. None jei nenustatyta.
img.HyperlinkUrlstr | NoneURL, jei paveikslėlis yra paspaudžiamas hipersaitas. None jei nesusietas.
img.Tagslist[NoteTag]OneNote žymės, priskirtos šiam paveikslėliui (žvaigždutė, žymimasis langelis ir kt.).

Žingsnis 1: Įkelti dokumentą ir rasti paveikslus

from aspose.note import Document, Image

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

Žingsnis 2: perskaityti metaduomenis kiekvienam vaizdui

Apsaugokite visus nullable laukus naudodami is not None prieš naudojimą:

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

Pilnas pavyzdys: Išsaugoti vaizdus su metaduomenų ataskaita

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

Filtruoti vaizdus pagal savybę

Vaizdai su hipersaitais

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

Vaizdai su alternatyviu 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}")

Pastabos

  • img.Bytes visada yra (grąžina b"" neperskaitomoms nuotraukoms, niekada None). Patikrinkite len(img.Bytes) > 0 prieš išsaugant.
  • img.AlternativeTextTitle gali būti None, jei šaltinio dokumentas nenustato pavadinimo. Naudokite img.AlternativeTextDescription kaip atsarginį variantą.
  • Matmenys yra taškeliais (1 taškas = 1/72 colio), atitinka PowerPoint ir PDF konvencijas.

Žr. taip pat

 Lietuvių