Cara Membaca Metadata Imej dari OneNote dalam Python
Setiap nod Image dalam dokumen OneNote membawa metadata bersama dengan bait piksel mentah: nama fail asal, dimensi paparan (lebar dan tinggi dalam titik), teks alternatif untuk kebolehcapaian, dan secara pilihan URL hiperpaut jika imej tersebut dipautkan. Aspose.Note FOSS untuk Python mendedahkan semua medan ini melalui kelas Image.
Prasyarat
pip install aspose-noteSifat Imej
| Property | Type | Description |
|---|---|---|
img.Bytes | bytes | Data imej mentah. Tulis ke cakera dengan open(name, "wb").write(img.Bytes). |
img.FileName | str | None | Nama fail asal disimpan dalam fail .one. None jika tidak disimpan. |
img.Width | float | None | Lebar paparan dalam titik. None jika tidak disimpan. |
img.Height | float | None | Ketinggian paparan dalam titik. None jika tidak disimpan. |
img.AlternativeTextDescription | str | None | Badan teks alt kebolehcapaian. None jika tidak ditetapkan. |
img.AlternativeTextTitle | str | None | Tajuk teks alt kebolehcapaian. None jika tidak ditetapkan. |
img.HyperlinkUrl | str | None | URL jika imej merupakan pautan klik. None jika tidak dipautkan. |
img.Tags | list[NoteTag] | Tag OneNote yang dilampirkan pada imej ini (bintang, kotak semak, dll.). |
Langkah 1: Muatkan Dokumen dan Cari Imej
from aspose.note import Document, Image
doc = Document("MyNotes.one")
images = doc.GetChildNodes(Image)
print(f"Found {len(images)} image(s)")Langkah 2: Baca Metadata untuk Setiap Imej
Lindungi semua medan yang boleh kosong dengan is not None sebelum digunakan:
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}")Contoh Lengkap: Simpan Imej dengan Laporan Metadata
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")Tapis Imej mengikut Sifat
Imej dengan pautan hiper
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}")Imej dengan teks alt
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}")Catatan
img.Bytessentiasa hadir (mengembalikanb""untuk imej yang tidak dapat dibaca, tidak pernahNone). Periksalen(img.Bytes) > 0sebelum menyimpan.img.AlternativeTextTitlemungkinNonejika dokumen sumber tidak menetapkan tajuk. Gunakanimg.AlternativeTextDescriptionsebagai alternatif.- Dimensi berada dalam points (1 point = 1/72 inci), selaras dengan konvensyen PowerPoint dan PDF.