使用 IronWord 透過 C# 從 DOCX 檔案中擷取圖片

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronWord 的 ExtractImages() 方法可讓您透過程式化方式從 Word 文件中提取所有嵌入的圖片,並提供圖片資料及元資料(如尺寸和格式)的存取權限,以便進行儲存或處理。

快速入門:使用 C# 從 DOCX 檔案擷取圖片

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronWord

    PM > Install-Package IronWord
  2. 請複製並執行此程式碼片段。

    // Install IronWord: Install-Package IronWord
    using IronWord;
    using IronSoftware.Drawing;
    
    // Load your Word document
    WordDocument doc = new WordDocument("document.docx");
    
    // Extract all images
    var images = doc.ExtractImages();
    
    // Save each image with custom naming
    int imageIndex = 0;
    foreach (var image in images)
    {
        // Cast to AnyBitmap to access SaveAs method
        ((AnyBitmap)image.Image).SaveAs($"output-{imageIndex}.png");
    
        // Access image properties
        Console.WriteLine($"Image {imageIndex}: {image.Width}x{image.Height}");
        imageIndex++;
    }
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronWord

    arrow pointer

從 WORD 文件中擷取圖片是內容遷移、媒體管理及程式化文件處理的常見需求。 無論您是正在建置內容管理系統、自動化文件工作流程,還是建立數位檔案庫,IronWord 都能簡化對嵌入式圖片的存取,讓您能透過尺寸和格式等屬性,將圖片儲存、重複使用或進行分析。

開始使用 IronWord


如何從 WORD 文件中擷取圖片?

使用 IronWord 從 Word 文件中擷取圖片非常簡單。 檔案 embedded_images.docx 將作為範例檔案,其中包含 3 個不同頁面上的 5 張圖片。 以下程式碼片段定義了使用 ExtractImages() 方法進行圖片擷取流程的核心工作流程。

在使用文件處理函式庫時,務必了解授權要求,以確保您的應用程式符合使用條款。 IronWord 採用與其他 Iron 產品相似的授權模式,提供永久授權並附帶全面的技術支援選項。 若要進行生產環境部署,您需要套用授權金鑰以移除任何浮水印或限制。

:path=/static-assets/word/content-code-examples/how-to/extract-images-properties.cs
using System;
using IronWord;
using IronSoftware.Drawing;

// Load an existing Word document
WordDocument doc = new WordDocument("embedded_images.docx");

// Extract all images from the document
var images = doc.ExtractImages();

// Iterate through extracted images
int count = 0;
foreach (var image in images)
{
    // Save each image to disk
    string fileName = $"extracted-image-{count}.png";
    ((AnyBitmap)image.Image).SaveAs(fileName);

    Console.WriteLine($"Extracted image {count}:");
    Console.WriteLine($"Width: {image.Width}");
    Console.WriteLine($"Height: {image.Height}");
    Console.WriteLine($"Saved as: {fileName}");

    count++;
}

Console.WriteLine($"Total images extracted: {count}");
Imports System
Imports IronWord
Imports IronSoftware.Drawing

' Load an existing Word document
Dim doc As New WordDocument("embedded_images.docx")

' Extract all images from the document
Dim images = doc.ExtractImages()

' Iterate through extracted images
Dim count As Integer = 0
For Each image In images
    ' Save each image to disk
    Dim fileName As String = $"extracted-image-{count}.png"
    DirectCast(image.Image, AnyBitmap).SaveAs(fileName)

    Console.WriteLine($"Extracted image {count}:")
    Console.WriteLine($"Width: {image.Width}")
    Console.WriteLine($"Height: {image.Height}")
    Console.WriteLine($"Saved as: {fileName}")

    count += 1
Next

Console.WriteLine($"Total images extracted: {count}")
$vbLabelText   $csharpLabel

ExtractImages 方法會傳回一個可枚舉的影像物件集合,每個物件皆包含完整的影像資料及元資料。 若要儲存圖片,請將 Image 屬性轉換為 AnyBitmap,並使用 ((AnyBitmap)image.Image).SaveAs() 來呼叫 SaveAs 方法。 這需要在您的命名空間宣告中加入 using IronSoftware.Drawing;

此方法可實現靈活的處理工作流程——您可以如上所述將圖片儲存至磁碟、轉換為不同格式,或直接串流至雲端儲存服務。 此方法可處理常見於 WORD 文件中的各種圖片格式,包括 JPEG、PNG、BMP 及 GIF。

範例文件長什麼樣子?

內嵌圖片的 WORD 文件:Google 標誌、人頭剪影、銀河場景、獅子及禪石

我應該期待什麼樣的輸出結果?

除錯主控台顯示 5 張已擷取的圖片,包含尺寸及檔案名稱:extracted-image-0.png 至 extracted-image-4.png

提取的圖片應保留原始格式(例如 .png 或其他格式),並可儲存為相應的檔案副檔名。 您可以依需求遍歷文件中的所有圖片,或針對特定區段進行處理。

進階影像擷取情境

除了基本的資料擷取功能外,IronWord 的影像處理能力還支援開發人員在生產環境應用程式中經常遇到的多種進階情境:

批次處理多個文件:在處理大量文件集合時,您可以透過並行處理,同時從多個 WORD 檔案中擷取圖片。 此方法能顯著縮短文件歸檔或內容遷移專案的處理時間。

圖像格式轉換:提取的圖像物件支援不同格式之間的轉換。 您可以從 WORD 文件中擷取 JPEG 圖像,並將其儲存為 PNG 格式以進行網頁優化,或轉換為 WebP 格式以確保與現代瀏覽器的相容性。

元資料保留:每張擷取的圖片均保留重要元資料,包括尺寸、解析度及色彩深度。 這些資訊對於實作影像優化流程,或在整個應用程式中維持品質標準而言,具有極高價值。

對於需要持續支援與定期更新的企業級應用程式,建議考慮探索授權延長方案,以持續使用新功能並享有優先支援服務。 若您的專案範圍擴大,升級選項可讓您無縫擴展,以涵蓋更多開發人員或部署地點。

與文件工作流程的整合

圖片擷取通常是大型文件處理工作流程的一部分。 請參考以下常見的整合模式:

內容管理系統:在文件上傳時擷取圖片,以建立縮圖預覽、建立圖片庫或填充媒體庫。 擷取的圖片可建立索引以供搜尋功能使用,或標記文件元資料。

文件轉換流程:在將 WORD 文件轉換為其他格式時,可將提取的圖片單獨處理,以獲得最佳品質。 這種分離可實現針對不同格式的優化——例如,針對網頁輸出與PRINT輸出採用不同的壓縮設定。

品質保證工作流程:透過自動化擷取功能,可系統性地審查嵌入的圖片,以確保符合品牌指南、解析度要求或檔案大小限制。 您可以在發布前標記包含低解析度圖片或格式錯誤的文件。

如欲掌握文件處理功能的最新特性與改進,請定期查閱產品變更紀錄。 新版本通常包含效能提升與擴展的格式支援,這將有助於您的影像擷取工作流程。

效能考量

處理包含大量或高解析度圖片的文件時,請考慮以下效能優化策略:

記憶體管理:應以批次方式處理影像,而非將所有影像同時載入記憶體中。 此方法可避免在處理大型文件或高解析度圖像時發生記憶體耗盡的情況。

非同步處理:針對 I/O 操作實作 async/await 模式,特別是在將擷取的影像儲存至磁碟或網路儲存空間時。 這能確保您的應用程式在長時間的資料擷取作業期間仍保持響應。

選擇性擷取:若您僅需特定圖片,建議根據圖片屬性或文件結構設定篩選條件,以避免處理不必要的內容。

其穩健的 API 設計確保在不同文件類型與圖像格式間保持一致的運作行為,讓您能輕鬆地在 .NET 應用程式中建置可靠的圖像擷取功能。

常見問題

如何在 C# 中從 DOCX 檔案中擷取圖片?

您可以使用 IronWord 的 ExtractImages() 方法從 DOCX 檔案中擷取圖片。只需透過 WordDocument doc = new WordDocument("document.docx") 載入您的 Word 文件,然後呼叫 doc.ExtractImages() 即可取得所有嵌入的圖片。每張圖片皆可透過 SaveAs() 方法,以您偏好的格式和檔名儲存。

從 WORD 文件中擷取圖片時,我可以存取哪些圖片屬性?

IronWord 可存取重要的影像元資料,包括寬度和高度等尺寸。ExtractImages() 方法會傳回一組影像物件,其中包含原始影像資料及這些元資料屬性,讓您能根據影像的特性,透過程式設計方式進行分析或處理。

我能否將擷取的圖片儲存為不同格式?

是的,IronWord 允許您將擷取的圖片儲存為多種格式。請對每個圖片物件使用 SaveAs() 方法,並指定您想要的檔名及適當的副檔名(例如 .png、.jpg)。IronWord程式庫會根據您提供的副檔名自動處理格式轉換。

如何安裝用於從 WORD 文件中擷取圖片的函式庫?

請透過 NuGet 套件管理員執行以下指令安裝 IronWord:Install-Package IronWord。安裝完成後,在您的 C# 檔案中加入 'using IronWord;',即可使用影像擷取功能及其他文件處理功能。

能否從多頁面的 WORD 文件中擷取圖片?

是的,IronWord 的 ExtractImages() 方法會從整個 WORD 文件中提取所有圖片,無論文件包含多少頁。該方法會返回文件中所有嵌入圖片的完整集合,無論這些圖片位於單一頁面或分散於多頁之中。

Ahmad Sohail
全端開發者

Ahmad 是一位全端開發者,具備扎實的 C#、Python 及網頁技術基礎。他對建構可擴展的軟體解決方案深感興趣,並樂於探索設計與功能如何在實際應用中完美結合。

在加入 Iron Software 團隊之前,Ahmad 曾參與自動化專案與 API 整合工作,專注於提升效能與開發者體驗。

閒暇之餘,他喜歡嘗試 UI/UX 創意、為開源工具貢獻心力,並偶爾投入技術寫作與文件編寫,致力於將複雜的主題轉化為淺顯易懂的內容。

準備開始了嗎?
Nuget 下載 44,829 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronWord
執行範例 觀看您的資料轉為 WORD 文件。