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-noteAttēla īpašības
| Īpašība | Tips | Apraksts |
|---|---|---|
img.Bytes | bytes | Neapstrādāti attēla dati. Ierakstiet diskā, izmantojot open(name, "wb").write(img.Bytes). |
img.FileName | str | None | Oriģinālais faila nosaukums saglabāts .one failā. None, ja nav saglabāts. |
img.Width | float | None | Attēlojuma platums punktos. None, ja nav saglabāts. |
img.Height | float | None | Attēlojuma augstums punktos. None, ja nav saglabāts. |
img.AlternativeTextDescription | str | None | Pieejamības alternatīvā teksta pamatteksts. None, ja nav iestatīts. |
img.AlternativeTextTitle | str | None | Pieejamības alternatīvā teksta virsraksts. None, ja nav iestatīts. |
img.HyperlinkUrl | str | None | URL, ja attēls ir klikšķināma saite. None, ja nav saistīts. |
img.Tags | list[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.Bytesvienmēr ir klātesošs (atgriežb""neizlasāmām attēliem, nekadNone). Pārbaudietlen(img.Bytes) > 0pirms saglabāšanas.img.AlternativeTextTitlevar būtNone, ja avota dokumentā nav iestatīts nosaukums. Izmantojietimg.AlternativeTextDescriptionkā rezerves variantu.- Izmēri ir punktos (1 punkts = 1/72 collas), kas atbilst PowerPoint un PDF konvencijām.