ในบทความนี้ คุณจะได้เรียนรู้วิธีผสานหรือรวมรูปภาพหลายรูปเป็นภาพเดียวโดยใช้โปรแกรมโดยใช้ภาษา C# คำแนะนำทีละขั้นตอนและตัวอย่างโค้ดจะสาธิตวิธีการรวมรูปภาพในแนวนอนหรือแนวตั้ง
C # API เพื่อรวมรูปภาพ - ดาวน์โหลดฟรี
ในการรวมภาพหลายภาพเป็นภาพเดียว เราจะใช้ Aspose.Imaging for .NET เป็น API การประมวลผลภาพที่ทรงพลังและเต็มไปด้วยคุณสมบัติที่ให้คุณจัดการรูปแบบภาพได้หลากหลาย คุณสามารถ ดาวน์โหลด API หรือติดตั้งโดยใช้ NuGet
PM> Install-Package Aspose.Imaging
รวมหลายภาพใน C
มีสองวิธีในการรวมรูปภาพเป็นหนึ่งเดียว: แนวตั้งและแนวนอน ในวิธีการเดิม ภาพจะถูกต่อเข้าด้วยกันในแนวตั้ง ในขณะที่ในวิธีหลัง ภาพจะถูกรวมเข้าด้วยกันในแนวนอน ในส่วนต่อไปนี้ คุณจะได้เรียนรู้ทั้งสองวิธีพร้อมตัวอย่างโค้ด
C# รวมรูปภาพในแนวตั้ง
ต่อไปนี้เป็นขั้นตอนในการผสานรูปภาพในแนวตั้งโดยใช้ C#
- ขั้นแรก ระบุเส้นทางของรูปภาพในอาร์เรย์สตริง
- จากนั้น สร้างรายการ ขนาด และจัดเก็บขนาดของแต่ละภาพลงในนั้น
- คำนวณความสูงและความกว้างของภาพผลลัพธ์
- สร้างวัตถุของคลาส StreamSource และเริ่มต้นมันด้วย MemoryStream ใหม่
- สร้างวัตถุของคลาส JpegOptions และตั้งค่าตัวเลือก
- สร้างอินสแตนซ์คลาส JpegImage สำหรับรูปภาพใหม่และเริ่มต้นด้วย JpegOptions และความสูงและความกว้างที่คำนวณได้
- วนซ้ำตามรายการรูปภาพ และในการวนซ้ำแต่ละครั้ง ให้โหลดรูปภาพในวัตถุ RasterImage
- สร้าง สี่เหลี่ยมผืนผ้า สำหรับแต่ละภาพและเพิ่มลงในภาพใหม่โดยใช้เมธอด JpegImage.SaveArgb32Pixels()
- เพิ่มความสูงของตะเข็บในการวนซ้ำแต่ละครั้ง
- สุดท้าย บันทึกภาพใหม่โดยใช้เมธอด JpegImage.Save(string)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการรวมรูปภาพในแนวตั้งใน C#
// สร้างรายการรูปภาพ
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg", "image5.png" };
// รับขนาดของภาพที่ได้
List<Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
using (RasterImage image = (RasterImage)Image.Load(imagePath))
{
imageSizes.Add(image.Size);
}
}
int newWidth = imageSizes.Max(size => size.Width);
int newHeight = imageSizes.Sum(size => size.Height);
// รวมภาพเป็นภาพใหม่
using (MemoryStream memoryStream = new MemoryStream())
{
// สร้างแหล่งเอาต์พุต
StreamSource outputStreamSource = new StreamSource(memoryStream);
// สร้างตัวเลือก jpeg
JpegOptions options = new JpegOptions() { Source = outputStreamSource, Quality = 100 };
// สร้างอิมเมจเอาต์พุต
using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
{
int stitchedHeight = 0;
// รวมรูปภาพ
foreach (string imagePath in imagePaths)
{
using (RasterImage image = (RasterImage)Image.Load(imagePath))
{
Rectangle bounds = new Rectangle(0, stitchedHeight, image.Width, image.Height);
newImage.SaveArgb32Pixels(bounds, image.LoadArgb32Pixels(image.Bounds));
stitchedHeight += image.Height;
}
}
// บันทึกภาพที่ผสาน
newImage.Save("merged-image.jpg");
}
}
รวมรูปภาพในแนวนอนใน C#
ต่อไปนี้เป็นขั้นตอนในการรวมรูปภาพในแนวนอนโดยใช้ C#
- ขั้นแรก ระบุเส้นทางของรูปภาพในอาร์เรย์สตริง
- จากนั้น สร้างรายการ ขนาด และจัดเก็บขนาดของแต่ละภาพลงในนั้น
- คำนวณความสูงและความกว้างของภาพผลลัพธ์
- สร้างซอร์สใหม่โดยใช้ FileCreateSource(String, Boolean) และเริ่มต้นด้วยพาธของไฟล์
- สร้างวัตถุของคลาส JpegOptions และตั้งค่าตัวเลือก
- สร้างอินสแตนซ์คลาส JpegImage สำหรับรูปภาพใหม่และเริ่มต้นด้วย JpegOptions และความสูงและความกว้างที่คำนวณได้
- วนซ้ำตามรายการรูปภาพ และในการวนซ้ำแต่ละครั้ง ให้โหลดรูปภาพในวัตถุ RasterImage
- สร้าง สี่เหลี่ยมผืนผ้า สำหรับแต่ละภาพและเพิ่มลงในภาพใหม่โดยใช้เมธอด JpegImage.SaveArgb32Pixels()
- เพิ่มความกว้างของตะเข็บในการวนซ้ำแต่ละครั้ง
- เมื่อเสร็จแล้ว ให้บันทึกภาพใหม่โดยใช้เมธอด JpegImage.Save(string)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการรวมภาพหลายภาพในแนวนอน
// สร้างรายการรูปภาพ
string[] imagePaths = { "image1.jpg", "image2.jpg", "image3.jpg", "image4.JPG", "image5.png" };
// เพื่อสร้างภาพชั่วคราว
string tempFilePath = "temp.jpg";
// รับขนาดของภาพที่ได้
List <Size> imageSizes = new List<Size>();
foreach (string imagePath in imagePaths)
{
using (RasterImage image = (RasterImage)Image.Load(imagePath))
{
imageSizes.Add(image.Size);
}
}
int newWidth = imageSizes.Sum(size => size.Width);
int newHeight = imageSizes.Max(size => size.Height);
// รวมภาพเข้าด้วยกันใหม่
Source tempFileSource = new FileCreateSource(tempFilePath, isTemporal: true);
// สร้างตัวเลือก jpeg
JpegOptions options = new JpegOptions() { Source = tempFileSource, Quality = 100 };
using (JpegImage newImage = (JpegImage)Image.Create(options, newWidth, newHeight))
{
int stitchedWidth = 0;
// รวมรูปภาพ
foreach (string imagePath in imagePaths)
{
using (RasterImage image = (RasterImage)Image.Load(imagePath))
{
Rectangle bounds = new Rectangle(stitchedWidth, 0, image.Width, image.Height);
newImage.SaveArgb32Pixels(bounds, image.LoadArgb32Pixels(image.Bounds));
stitchedWidth += image.Width;
}
}
// บันทึกภาพที่ผสาน
newImage.Save(outputPath);
}
C# Image Merging API - รับใบอนุญาตฟรี
คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี และรวมรูปภาพโดยไม่มีข้อจำกัดในการประเมิน
บทสรุป
ในบทความนี้ คุณได้เรียนรู้วิธีรวมรูปภาพหลายรูปเป็นภาพเดียวโดยใช้ C# ตัวอย่างโค้ดได้สาธิตวิธีการรวมรูปภาพในแนวตั้งและแนวนอน นอกจากนี้ คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับ API การประมวลผลภาพ .NET โดยใช้ เอกสารประกอบ นอกจากนี้ คุณสามารถแบ่งปันคำถามของคุณกับเราผ่านทาง ฟอรัม
ดูสิ่งนี้ด้วย
- แปลงรูปภาพเป็นโทนสีเทาใน C#
- เพิ่มลายน้ำให้กับรูปภาพโดยใช้ C #
- บีบอัดรูปภาพ PNG, JPEG และ TIFF โดยใช้ C#
ข้อมูล: Aspose ให้บริการ เว็บแอปภาพตัดปะฟรี เมื่อใช้บริการออนไลน์นี้ คุณสามารถรวมภาพ JPG เป็น JPG หรือ PNG เป็น PNG สร้าง ตารางภาพ และอื่นๆ