Πώς να διαβάσετε τα μεταδεδομένα εικόνας από το OneNote σε Python

Πώς να διαβάσετε τα μεταδεδομένα εικόνας από το OneNote σε Python

Κάθε Image κόμβος σε ένα έγγραφο OneNote μεταφέρει μεταδεδομένα μαζί με τα ακατέργαστα bytes εικονοστοιχείων: το αρχικό όνομα αρχείου, τις διαστάσεις εμφάνισης (πλάτος και ύψος σε σημεία), το εναλλακτικό κείμενο για προσβασιμότητα και προαιρετικά μια διεύθυνση URL υπερσυνδέσμου εάν η εικόνα ήταν συνδεδεμένη. Το Aspose.Note FOSS for Python εκθέτει όλα αυτά τα πεδία μέσω της κλάσης Image.


Προαπαιτούμενα

pip install aspose-note

Ιδιότητες εικόνας

PropertyTypeDescription
img.BytesbytesΑκατέργαστα δεδομένα εικόνας. Γράψτε στο δίσκο με open(name, "wb").write(img.Bytes).
img.FileNamestr | NoneΑρχικό όνομα αρχείου αποθηκευμένο στο αρχείο .one. None εάν δεν αποθηκευτεί.
img.Widthfloat | NoneΠλάτος εμφάνισης σε σημεία. None εάν δεν αποθηκευτεί.
img.Heightfloat | NoneΎψος εμφάνισης σε σημεία. None εάν δεν αποθηκευτεί.
img.AlternativeTextDescriptionstr | NoneΚείμενο alt προσβασιμότητας. None εάν δεν έχει οριστεί.
img.AlternativeTextTitlestr | NoneΤίτλος κειμένου alt προσβασιμότητας. None εάν δεν έχει οριστεί.
img.HyperlinkUrlstr | NoneURL εάν η εικόνα είναι κλικ-σύνδεσμος. None εάν δεν είναι συνδεδεμένη.
img.Tagslist[NoteTag]Ετικέτες OneNote συνδεδεμένες με αυτήν την εικόνα (αστέρι, πλαίσιο ελέγχου κ.λπ.).

Βήμα 1: Φόρτωση του Εγγράφου και Εύρεση Εικόνων

from aspose.note import Document, Image

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

Βήμα 2: Ανάγνωση μεταδεδομένων για κάθε εικόνα

Προστατέψτε όλα τα πεδία που μπορούν να είναι null με is not None πριν τη χρήση:

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

Πλήρες Παράδειγμα: Αποθήκευση Εικόνων με Αναφορά Μεταδεδομένων

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

Φιλτράρετε τις εικόνες κατά ιδιότητα

Εικόνες με υπερσυνδέσμους

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

Εικόνες με εναλλακτικό κείμενο

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

Σημειώσεις

  • img.Bytes είναι πάντα παρόν (επιστρέφει b"" για μη αναγνώσιμες εικόνες, ποτέ None). Ελέγξτε len(img.Bytes) > 0 πριν από την αποθήκευση.
  • img.AlternativeTextTitle μπορεί να είναι None εάν το πηγαίο έγγραφο δεν ορίζει τίτλο. Χρησιμοποιήστε img.AlternativeTextDescription ως εναλλακτική.
  • Οι διαστάσεις είναι σε points (1 point = 1/72 ίντσα), σύμφωνα με τις συμβάσεις του PowerPoint και του PDF.

Δείτε επίσης

 Ελληνικά