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-noteAttēla īpašības
| Īpašība | Tips | Apraksts |
|---|---|---|
img.Bytes | bytes | Neapstrādāti attēla dati. Ierakstīt diskā ar open(name, "wb").write(img.Bytes). |
img.FileName | `str | None` |
img.Width | `float | None` |
img.Height | `float | None` |
img.AlternativeTextDescription | `str | None` |
img.AlternativeTextTitle | `str | None` |
img.HyperlinkUrl | `str | None` |
img.Tags | list[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.Bytesvienmēr ir klātesošs (atgriežb""neizlasāmiem attēliem, nekadNone). Pārbaudietlen(img.Bytes) > 0pirms saglabāšanas.img.AlternativeTextTitlevar būtNoneja avota dokuments nenosaka nosaukumu. Izmantojietimg.AlternativeTextDescriptionkā rezerves variantu.- Mēri ir punktos (1 punkts = 1/72 collas), atbilst PowerPoint un PDF konvencijām.