Extract Images from Word in C#

บทนํา

เอกสาร Word มักมีภาพรวม ซึ่งอาจจําเป็นต้องถูกสกัดเพื่อใช้ใหม่การประมวลผลหรือจัดเก็บ ในคู่มือนี้เราจะสํารวจ วิธีการสกัดภาพจากไฟล์ DOCX และ DOC โดยโปรแกรมใน C# โดยใช้ Aspose.Words สําหรับ .NET.

ทําไม استخراجรูปภาพจาก Word?

การสกัดภาพจากเอกสาร Word อาจมีประโยชน์สําหรับเหตุผลหลายอย่าง:

  • การสกัดภาพอัตโนมัติจํานวนมาก จากเอกสาร Word จํานวนมาก.
  • รับภาพที่มีความละเอียดสูง โดยไม่ต้องสูญเสียคุณภาพ.
  • บันทึกภาพสกัด ในรูปแบบต่างๆรวมถึง JPEG, PNG และ BMP.

ตารางเนื้อหา

1. การตั้งค่า Word Image Extraction ใน C#

เพื่อ استخراجรูปภาพจากเอกสาร Word เราใช้ Aspose.Words for .NET ห้องสมุดที่มีประสิทธิภาพนี้ม:

  • การสกัดภาพอัตโนมัติ จาก DOCX, DOC และรูปแบบอื่น ๆ.
  • สนับสนุนสําหรับรูปแบบภาพหลายรูปแบบ (PNG, JPG, BMP, ฯลฯ.).
  • การประมวลผลที่มีประสิทธิภาพ ของเอกสาร Word ขนาดใหญ.

การติดตั้ง

คุณสามารถติดตั้ง Aspose.Words โดย NuGet ด้วยคําสั่งต่อไปนี้ได้อย่างง่ายดาย:

PM> Install-Package Aspose.Words

Alternatively, ดาวน์โหลด DLL จาก Aspose ดาวน์โหลดหน้า.

2. Step-by-step คู่มือในการสกัดภาพ

ทําตามขั้นตอนต่อไปนี้เพื่อ สกัดภาพจากเอกสาร Word โดยโปรแกรม:

  • ดาวน์โหลดไฟล์ ** Word** โดยใช Document หลักสูตร.
  • Retrieve รูปแบบทั้งหมดที่มีรูปภาพ.
  • สารสกัดและ บันทึกภาพแต่ละภาพ ไปยังตําแหน่งที่กําหนด.

ตัวอย่างรหัส

นี่คือการตัดรหัสง่ายๆเพื่อช่วยให้คุณเริ่มต้น:

// Load the document
Document doc = new Document("input.docx");

// Get all shapes that contain images
NodeCollection shapes = doc.GetChildNodes(NodeType.Shape, true);

// Extract and save each image
int imageIndex = 1;
foreach (Shape shape in shapes)
{
    if (shape.HasImage)
    {
        string imagePath = $"Image_{imageIndex}.png";
        shape.ImageData.Save(imagePath);
        imageIndex++;
    }
}

วิธีนี้ อัตโนมัติการสกัดภาพจากเอกสาร Word อย่างมีประสิทธิภาพ.

3. การบันทึกภาพที่สกัดในรูปแบบที่แตกต่างกัน

Aspose.Words ช่วยให้คุณสามารถบันทึกภาพที่ได้รับในรูปแบบต่างๆให้ความยืดหยุ่นขึ้นอยู่กับความต้องการของคุณ:

รูปแบบประโยชน
JPEGรูปแบบที่บีบอัดเหมาะสําหรับการใช้งานเว็บ.
PNGฟรีรูปแบบสําหรับภาพที่มีคุณภาพสูง.
BMPรูปแบบที่ไม่มีการบีบอัดสําหรับรายละเอียดสูงสุด.

เพื่อบันทึกภาพในรูปแบบที่เฉพาะเจาะจงเพียงแค่ปรับขยายไฟล์ในวิธีการบันทึก.

4. สารสกัดภาพจากเอกสารหลายคํา

เพื่อสกัดภาพจากไฟล์ Word หลายไฟล์ คุณสามารถล้อผ่านโฟลเดอร์ตามที่แสดงไว้ด้านล่าง:

string[] files = Directory.GetFiles("input_docs", "*.docx");
foreach (string file in files)
{
    Document doc = new Document(file);
    NodeCollection shapes = doc.GetChildNodes(NodeType.Shape, true);

    int index = 1;
    foreach (Shape shape in shapes)
    {
        if (shape.HasImage)
        {
            string imagePath = $"Extracted_{Path.GetFileNameWithoutExtension(file)}_{index}.jpg";
            shape.ImageData.Save(imagePath);
            index++;
        }
    }
}

วิธีนี้ อัตโนมัติการสกัดภาพจํานวนมากจากเอกสาร Word และช่วยให้คุณประหยัดเวลาและความพยายามอย่างมาก นอกจากนี้คุณสามารถใช้ประโยชน์จากความสามารถในการสกปรกภาพจาก PDF ใน C# หากการทํางานของคุณต้องการจัดการไฟล์ PDF.

5. ได้รับใบอนุญาต API ฟรี

เพื่อล็อคฟังก์ชั่นเต็มของ Aspose.Words คุณสามารถขอใบอนุญาตชั่วคราวฟรี (https://purchase.aspose.com/temporary-license) นี้จะช่วยให้คุณเข้าถึงคุณสมบัติทั้งหมดของห้องสมุดเพื่อวัตถุประสงค์การประเมิน.

สําหรับเอกสารรายละเอียดเพิ่มเติมโปรดเยี่ยมชม Aspose.Words Guide ** หรือเข้าร่วมกับชุมชนบน ** Forum สําหรับคําถามหรือการสนับสนุนใด ๆ.

6. ข้อสรุปและทรัพยากรเพิ่มเติม

คําอธิบาย

ในคู่มือนี้เราครอบคลุม:

  • วิธีการสกัดภาพจากเอกสาร Word ใน C#
  • ส่งภาพในรูปแบบที่แตกต่างกัน (JPEG, PNG, BMP)
  • Batch การประมวลผลหลายไฟล์ Word
  • ใช้ C# เพื่อ استخراجข้อความจาก Word และแปลง C# Word ไปยัง Image สําหรับการจัดการเอกสารที่เพิ่มขึ้น.

ด้วย Aspose.Words for .NET คุณสามารถประดิษฐ์และจัดการภาพได้อย่างมีประสิทธิภาพ ในเอกสาร Word เริ่มต้น อัตโนมัติรวบรวมภาพ Word วันนี้และปรับปรุงกระแสทํางานในการประมวลผลเนื้อหาของคุณ! นอกจากนี้สําหรับผู้ที่สนใจในการแปลงภาพเป็นเอกลักษณ์โปรดพิจารณาการใช้ JPGTOWORD.NET สําหรับการเปลี่ยนแปลงระหว่างรูปแบบได้อย่างราบรื่น นอกจากนี้ความสามารถในการ สกัดข้อความจาก Word สามารถปรับตัวคุณสมบัติการจัดการเอกชนของคุณได้มากขึ้นรวมถึงวิธีการ การประยุกต์ใช้ข้อความ จาก Word และใช้ C# เพื่อประหยัดค่าใช้จ่ายใน Word.

นอกจากนี้สําหรับสถานการณ์ที่คุณต้องการแปลง C# Word to Image ความหลากหลายของ Aspose.Words ให้เครื่องมือทั้งหมดที่จําเป็นสําหรับการบูรณาการและจัดการเอกสารได้อย่างมีประสิทธิภาพ นอกจากนี้คุณยังสามารถใช้ฟังก์ชั่น .NET Word เพื่อภาพ เพื่อปรับปรุงการทํางานของคุณได้มากขึ้น.

การจัดการข้อผิดพลาดและการดีบัก

การสกัดภาพจากเอกสาร Word อาจเผชิญกับสถานการณ์ที่ไฟล์เสียหายหรือรูปแบบภาพไม่รองรับ การจัดการข้อผิดพลาดที่เหมาะสมจะทำให้โปรแกรมของคุณทำงานต่อได้อย่างราบรื่น

ตรวจสอบรูปแบบไฟล์และเวอร์ชันของ Aspose.Words

  • ตรวจสอบให้แน่ใจว่าไฟล์ที่ส่งเข้ามาเป็น .doc หรือ .docx ก่อนทำการโหลด หากไฟล์เป็นรูปแบบเก่า (.doc) ให้ใช้ LoadOptions เพื่อกำหนดเวอร์ชันของ Word ที่รองรับ
  • ตรวจสอบเวอร์ชันของไลบรารี Aspose.Words ที่ใช้งานอยู่ หากเป็นเวอร์ชันเก่าอาจไม่มีการสนับสนุนรูปแบบภาพบางประเภท (เช่น WebP) ให้อัปเดตเป็นเวอร์ชันล่าสุด

จัดการภาพที่เสียหายหรือไม่มีข้อมูล

  • ใช้ shape.HasImage ก่อนเรียก shape.ImageData.Save เพื่อตรวจสอบว่ามีข้อมูลภาพจริงหรือไม่
  • หาก shape.ImageData คืนค่า null ให้บันทึกข้อความเตือนลงไฟล์ล็อกหรือคอนโซลและข้ามภาพนั้น
  • ตัวอย่างโค้ดการตรวจสอบและบันทึกข้อผิดพลาด:
try
{
    shape.ImageData.Save(imagePath);
}
catch (Exception ex)
{
    Console.WriteLine($"บันทึกภาพล้มเหลวที่ {imagePath}: {ex.Message}");
    // สามารถเขียนลงไฟล์ล็อกเพื่อวิเคราะห์ต่อไป
}

ตัวอย่างการล็อกและการแสดงข้อผิดพลาด

  • ใช้ไลบรารี log4net หรือ Serilog เพื่อบันทึกเหตุการณ์ในระดับต่าง ๆ (Info, Warn, Error)
  • ตั้งค่าไฟล์ config ให้บันทึกข้อมูลลงไฟล์ extraction.log เพื่อให้ผู้ดูแลระบบสามารถตรวจสอบได้ภายหลัง

คำถามที่พบบ่อย (FAQ)

ฉันต้องใช้ลิขสิทธิ์แบบใดเพื่อสกัดภาพจำนวนมาก?

Aspose.Words ให้ใบอนุญาตแบบ Developer หรือ Site License ซึ่งสามารถใช้ในเซิร์ฟเวอร์ที่ประมวลผลหลายไฟล์พร้อมกัน หากต้องการทดลองจำนวนจำกัดให้ใช้ใบอนุญาตชั่วคราว (Temporary License) ที่ให้คุณสมบัติครบชุดเป็นเวลา 30 วัน

สามารถสกัดภาพจากไฟล์ DOC (เวอร์ชันเก่า) ได้หรือไม่?

ได้ค่ะ โดยใช้ LoadOptions เพื่อระบุ LoadFormat.Doc เมื่อสร้างอ็อบเจกต์ Document ตัวอย่าง:

LoadOptions options = new LoadOptions();
options.LoadFormat = LoadFormat.Doc;
Document doc = new Document("oldfile.doc", options);

ฉันต้องการบันทึกภาพเป็นรูปแบบ WebP ต้องทำอย่างไร?

Aspose.Words ไม่รองรับ WebP โดยตรง แต่คุณสามารถบันทึกเป็น PNG หรือ JPEG แล้วใช้ไลบรารีอื่นเช่น ImageSharp หรือ SkiaSharp แปลงเป็น WebP ได้ ตัวอย่างการแปลงด้วย ImageSharp:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats.Webp;

using (Image img = Image.Load(imagePath))
{
    img.Save("output.webp", new WebpEncoder());
}

หากต้องการประหยัดเวลา สามารถสร้างเมธอดช่วยแปลงทั้งหมดในขั้นตอนสุดท้ายของการสกัดภาพได้

ทำอย่างไรหากต้องการสกัดเฉพาะภาพที่มีความกว้าง/สูงเกินค่าที่กำหนด?

หลังจากโหลด shape.ImageData ให้ตรวจสอบขนาดโดยใช้ shape.ImageData.ImageSize (หรือแปลงเป็น System.Drawing.Image เพื่ออ่าน Width/Height) แล้วคัดกรองตามเงื่อนไขของคุณก่อนบันทึก

using (MemoryStream ms = new MemoryStream(shape.ImageData.ImageBytes))
using (System.Drawing.Image img = System.Drawing.Image.FromStream(ms))
{
    if (img.Width >= 800 && img.Height >= 600)
    {
        shape.ImageData.Save(imagePath);
    }
}

การเพิ่มเงื่อนไขนี้จะช่วยลดจำนวนไฟล์ที่ไม่จำเป็นและประหยัดพื้นที่จัดเก็บ

มีวิธีใดบ้างที่จะทำให้การสกัดภาพทำงานแบบขนาน (parallel) เพื่อเพิ่มความเร็ว?

ใช้ Parallel.ForEach หรือ Task.WhenAll เพื่อประมวลผลหลายไฟล์หรือหลายรูปภาพพร้อมกัน ตัวอย่างการใช้ Parallel.ForEach สำหรับหลายไฟล์:

string[] files = Directory.GetFiles("input_docs", "*.docx");
Parallel.ForEach(files, file =>
{
    Document doc = new Document(file);
    // ดำเนินการสกัดภาพตามที่อธิบายไว้ข้างต้น
});

ควรระวังการเขียนไฟล์พร้อมกันให้ใช้ชื่อไฟล์ที่ไม่ซ้ำกันหรือโฟลเดอร์แยกตามไฟล์ต้นฉบับ

More in this category