C#/.NET应用程序编程开发中如何将两张或者多张图片合并成一张图片?

C#开发 作者: Rector 11 次阅读 · 读完约需 1 分钟 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

C#/.NET应用程序编程开发中,当前有这样的需求,即将两张或者多张不同的图片合并成一张图片,使用C#应该如何实现呢?

方案一

使用Graphics来将两张图片合并成一张,如下:

public static Bitmap MergeTwoImages(Image firstImage, Image secondImage)
{
    if (firstImage == null)
    {
        throw new ArgumentNullException("firstImage");
    }

    if (secondImage == null)
    {
        throw new ArgumentNullException("secondImage");
    }

    int outputImageWidth = firstImage.Width > secondImage.Width ? firstImage.Width : secondImage.Width;

    int outputImageHeight = firstImage.Height + secondImage.Height + 1;

    Bitmap outputImage = new Bitmap(outputImageWidth, outputImageHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

    using (Graphics graphics = Graphics.FromImage(outputImage))
    {
        graphics.DrawImage(firstImage, new Rectangle(new Point(), firstImage.Size),
            new Rectangle(new Point(), firstImage.Size), GraphicsUnit.Pixel);
        graphics.DrawImage(secondImage, new Rectangle(new Point(0, firstImage.Height + 1), secondImage.Size),
            new Rectangle(new Point(), secondImage.Size), GraphicsUnit.Pixel);
    }

    return outputImage;
}

方案二

如果需要合并多张图片,则可以使用如下的方法:

public static System.Drawing.Bitmap CombineBitmap(string[] files)
{
    List<System.Drawing.Bitmap> images = new List<System.Drawing.Bitmap>();
    System.Drawing.Bitmap finalImage = null;

    try
    {
        int width = 0;
        int height = 0;

        foreach (string image in files)
        {
            System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(image);

            width += bitmap.Width;
            height = bitmap.Height > height ? bitmap.Height : height;

            images.Add(bitmap);
        }

        finalImage = new System.Drawing.Bitmap(width, height);

        using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(finalImage))
        {
            g.Clear(System.Drawing.Color.Black);

            int offset = 0;
            foreach (System.Drawing.Bitmap image in images)
            {
                g.DrawImage(image,
                  new System.Drawing.Rectangle(offset, 0, image.Width, image.Height));
                offset += image.Width;
            }
        }

        return finalImage;
    }
    catch (Exception)
    {
        if (finalImage != null)
            finalImage.Dispose();
        throw;
    }
    finally
    {
        foreach (System.Drawing.Bitmap image in images)
        {
            image.Dispose();
        }
    }
}

最后调用Bitmap.Save()方法,即可将bitmap保存合并后的图片文件。

阅读了该文章的人还浏览了...

本文永久链接码友网 » C#/.NET应用程序编程开发中如何将两张或者多张图片合并成一张图片?

发布于: 2019-09-09 14:48:20
分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册