Extract Images from DOCX with C# using IronWord
IronWord の ExtractImages() メソッドは、プログラムで Word ドキュメントから埋め込まれたすべての画像を抽出し、画像データや寸法、形式などのメタデータへのアクセスを提供して保存または処理を可能にします。
クイックスタート: C# で DOCX から画像を抽出する
-
IronWord をNuGetパッケージマネージャでインストール
PM > Install-Package IronWord -
このコード スニペットをコピーして実行します。
// 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++; } -
実際の環境でテストするためにデプロイする
今日プロジェクトで IronWord を使い始めましょう無料トライアル
Word 文書から画像を抽出することは、コンテンツの移行、メディア管理、プログラムによる文書処理の一般的な要件です。 コンテンツ管理システムの構築、文書ワークフローの自動化、デジタルアーカイブの作成など、IronWordは埋め込み画像へのアクセスを簡素化し、寸法やフォーマットなどのプロパティを通して保存、再利用、分析を可能にします。
IronWordを始める
DOCXから画像を抽出する方法
- IronWordをインストール:
Install-Package IronWord - 既存のWord文書を読み込む
- 埋め込まれた画像をすべて取得するには、
ExtractImages()を呼び出します。 - 画像を反復処理してディスクに保存する
- 幅や高さなどの画像プロパティにアクセスする
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}")
ExtractImages メソッドは、画像データとメタデータを含む各画像オブジェクトの列挙可能なコレクションを返します。 画像を保存するには、Image プロパティを ((AnyBitmap)image.Image).SaveAs() を使用して AnyBitmap にキャストし、SaveAs メソッドにアクセスします。 これは、using IronSoftware.Drawing; を名前空間宣言に追加することを要求します。
このアプローチにより、柔軟な処理ワークフローが可能になります。上記のように画像をディスクに保存したり、異なるフォーマットに変換したり、クラウドストレージサービスに直接ストリーミングしたりすることができます。 この方法では、JPEG、PNG、BMP、GIFなど、Word文書によく埋め込まれるさまざまな画像形式を扱います。
サンプル文書はどのようなものですか?
どのようなアウトプットを期待すればよいですか?
抽出された画像は元の形式 (例えば、.png、または他の形式) を維持し、適切なファイル拡張子で保存することができます。 ドキュメント内のすべての画像を反復処理したり、要件に基づいて特定のセクションをターゲットにしたりすることができます。
高度な画像抽出シナリオ
IronWordの画像処理機能は、基本的な抽出だけでなく、開発者がプロダクション・アプリケーションで頻繁に遭遇するいくつかの高度なシナリオをサポートしています:
複数ドキュメントのバッチ処理:大規模な文書コレクションを処理する場合、複数のWordファイルから同時に画像を抽出する並列処理を実装できます。 このアプローチは、ドキュメントアーカイブやコンテンツ移行プロジェクトの処理時間を大幅に短縮します。
画像フォーマットの変換: 抽出された画像オブジェクトは、フォーマット間の変換をサポートします。 Word文書からJPEGを抽出し、Web最適化のためにPNGとして保存したり、モダンブラウザとの互換性のためにWebPに変換したりすることもあります。
メタデータの保持:抽出された各画像は、寸法、解像度、色深度などの重要なメタデータを保持します。 この情報は、画像の最適化パイプラインを実装したり、アプリケーション全体の品質基準を維持したりする際に役立ちます。
継続的なサポートと定期的なアップデートが必要なエンタープライズ アプリケーションについては、新機能への継続的なアクセスと優先的なサポートを提供する license extensions を検討してください。 プロジェクトのスコープが拡大した場合、アップグレードオプションは、追加の開発者や配置場所をカバーするためにシームレスなスケーリングを可能にします。
ドキュメントワークフローとの統合
画像抽出は、大規模な文書処理ワークフローの一部を構成することがよくあります。 一般的な統合パターンを考えてみましょう:
コンテンツ管理システム:ドキュメントのアップロード中に画像を抽出して、サムネイルプレビューを作成したり、画像ギャラリーを構築したり、メディアライブラリに入力したりします。 抽出された画像は、検索機能のためにインデックス化したり、ドキュメントのメタデータにタグ付けしたりすることができます。
ドキュメント変換パイプライン:Word文書を他の形式に変換する際、抽出した画像を個別に処理して最適な品質にすることができます。 たとえば、ウェブ出力と印刷出力で異なる圧縮設定を適用するなどです。
品質保証ワークフロー:自動抽出により、ブランドガイドライン、解像度要件、ファイルサイズの制約に準拠しているかどうか、埋め込み画像の体系的なレビューが可能になります。 低解像度の画像や不正確なフォーマットを含む文書は、公開前にフラグを立てることができます。
ドキュメント処理機能の最新機能や改善点の最新情報を入手するには、製品の変更履歴を定期的にチェックしてください。 新しいリリースには、画像抽出ワークフローに役立つパフォーマンスの強化やフォーマットサポートの拡張が含まれていることがよくあります。
パフォーマンスの考慮事項
多数の画像や高解像度の画像を含む文書を扱う場合は、以下のパフォーマンス最適化戦略を考慮してください:
メモリ管理:すべての画像を同時にメモリにロードするのではなく、バッチで画像を処理します。 このアプローチにより、大きな文書や高解像度の画像を扱う際のメモリの消耗を防ぐことができます。
非同期処理: I/O操作、特に抽出した画像をディスクやネットワークストレージに保存するときに、非同期/待機パターンを実装します。 これにより、長時間の抽出作業中も、アプリケーションの応答性が保たれます。
選択的抽出:特定の画像だけが必要な場合は、不要なコンテンツの処理を避けるために、画像プロパティや文書構造に基づいたフィルタの実装を検討してください。
堅牢なAPI設計により、さまざまな文書タイプや画像フォーマットで一貫した動作が保証されるため、信頼性の高い画像抽出機能を.NETアプリケーションに簡単に組み込むことができます。
よくある質問
C#でDOCXファイルから画像を抽出する方法を教えてください。
IronWordのExtractImages()メソッドを使えば、DOCXファイルから画像を抽出することができます。WordDocument doc = new WordDocument("document.docx")でWord文書を読み込み、doc.ExtractImages()を呼び出して埋め込まれた画像をすべて取得します。各画像は、SaveAs() メソッドを使用して、お好みのフォーマットとファイル名で保存できます。
Word文書から画像を抽出する際、どのような画像プロパティにアクセスできますか?
IronWordはWidthとHeightの寸法を含む重要な画像メタデータへのアクセスを提供します。ExtractImages()メソッドは、生の画像データとこれらのメタデータ・プロパティの両方を含む画像オブジェクトのコレクションを返すので、その特徴に基づいてプログラムで画像を分析したり処理したりすることができます。
抽出した画像をさまざまな形式で保存できますか?
はい、IronWordでは抽出した画像をさまざまな形式で保存することができます。各画像オブジェクトのSaveAs()メソッドを使用し、適切な拡張子(例:.png、.jpg)で希望のファイル名を指定してください。ライブラリは、指定された拡張子に基づいて自動的にフォーマット変換を行います。
Word文書から画像を抽出するライブラリのインストール方法を教えてください。
コマンドを使ってNuGet Package Manager経由でIronWordをインストールします:IronWordをインストールします。インストールが完了したら、C#ファイルに'using IronWord;'を追加し、画像抽出機能やその他の文書処理機能にアクセスする。
複数ページのWord文書から画像を抽出することは可能ですか?
はい、IronWordのExtractImages()メソッドは、Word文書全体からページ数に関係なくすべての画像を抽出します。このメソッドは、文書全体に埋め込まれたすべての画像の完全なコレクションを、それが1ページにあるか複数ページにまたがっているかにかかわらず返します。

