Python'da OneNote'tan Görüntü Üstverisini Okuma

Python'da OneNote'tan Görüntü Üstverisini Okuma

Her Image düğümü bir OneNote belgesinde ham piksel baytlarıyla birlikte meta verileri taşır: orijinal dosya adı, görüntü boyutları (genişlik ve yükseklik puan cinsinden), erişilebilirlik için alternatif metin ve isteğe bağlı olarak görüntü bir bağlantıya bağlıysa bir köprü URL’si. Aspose.Note FOSS for Python, bu alanların tümünü Image sınıfı aracılığıyla ortaya çıkarır.


Önkoşullar

pip install aspose-note

Görüntü Özellikleri

PropertyTypeDescription
img.BytesbytesHam görüntü verisi. open(name, "wb").write(img.Bytes) ile diske yazın.
img.FileNamestr | NoneOrijinal dosya adı .one dosyasında depolanır. Depolanmadıysa None.
img.Widthfloat | NoneGörünüm genişliği puan cinsinden. Depolanmadıysa None.
img.Heightfloat | NoneGörünüm yüksekliği puan cinsinden. Depolanmadıysa None.
img.AlternativeTextDescriptionstr | NoneErişilebilirlik alternatif metin gövdesi. Ayarlanmamışsa None.
img.AlternativeTextTitlestr | NoneErişilebilirlik alternatif metin başlığı. Ayarlanmamışsa None.
img.HyperlinkUrlstr | NoneGörüntü tıklanabilir bir bağlantıysa URL. Bağlantı yoksa None.
img.Tagslist[NoteTag]Bu görüntüye eklenmiş OneNote etiketleri (yıldız, onay kutusu vb.).

Adım 1: Belgeyi Yükle ve Görselleri Bul

from aspose.note import Document, Image

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

Adım 2: Her Görüntünün Meta Verilerini Oku

Kullanımdan önce tüm nullable alanları is not None ile koruyun:

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

Tam Örnek: Görüntüleri Meta Veri Raporu ile Kaydet

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

Özelliğe Göre Görüntüleri Filtrele

Bağlantı içeren Görseller

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

Alt metinli görseller

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

Notlar

  • img.Bytes her zaman bulunur (okunamayan görüntüler için b"" döndürür, asla None döndürmez). Kaydetmeden önce len(img.Bytes) > 0 kontrol edin.
  • img.AlternativeTextTitle kaynak belge bir başlık ayarlamazsa None olabilir. Yedek olarak img.AlternativeTextDescription kullanın.
  • Boyutlar nokta cinsindendir (1 nokta = 1/72 inç), PowerPoint ve PDF standartlarıyla eşleşir.

İlgili

 Türkçe