Combine two Images into one new Image

后端 未结 3 1107
暗喜
暗喜 2020-11-29 07:57

I have two JPEG files with different dimensions:

Image1 (Width1,Height1)

Image2 (Width2,Height2)

I want to create Image3 (Width3, Height3) with Image

相关标签:
3条回答
  • 2020-11-29 08:06

    Something like this will give you a new image with the two original images side by side.

    Bitmap bitmap = new Bitmap(image1.Width + image2.Width, Math.Max(image1.Height, image2.Height));
    using (Graphics g = Graphics.FromImage(bitmap))
    {
        g.DrawImage(image1, 0, 0);
        g.DrawImage(image2, image1.Width, 0);
    }
    
    0 讨论(0)
  • 2020-11-29 08:14

    You can try it

    library you need using

    using System.Drawing; using System.Drawing.Imaging; //controller

    public ActionResult Image()     
        {
            var bitmap = GetBitmap(); // The method that returns List<Bitmap>
            var width = 0;
            var height = 0;
            foreach (var image in bitmap)
            {
                width += image.Width;
                height = image.Height > height
                    ? image.Height
                    : height;
            }
            var bitmap2 = new Bitmap(width, height);
            var g = Graphics.FromImage(bitmap2);
            var localWidth = 0;
            foreach (var image in bitmap)
            {
                g.DrawImage(image, localWidth, 0);
                localWidth += image.Width;
            }
    
            var ms = new MemoryStream();
    
            bitmap2.Save(ms, ImageFormat.Png);
             var   result = ms.ToArray();
             //string base64String = Convert.ToBase64String(result); 
             return File(result, "image/jpeg"); //Return as file result
            //return base64String;
        }
    //this method returns List<Bitmap>
    public List<Bitmap> GetBitmap()
        {
            var lstbitmap = new List<Bitmap>();
            var bitmap = new Bitmap(@"E:\My project\ProjectImage\ProjectImage\BmImage\1525244892128.JPEG");
            var bitmap2 = new Bitmap(@"E:\My project\ProjectImage\ProjectImage\BmImage\1525244892204.JPEG");
            var bitmap3 = new Bitmap(@"E:\My project\ProjectImage\ProjectImage\BmImage\3.jpg");
            lstbitmap.Add(bitmap);
            lstbitmap.Add(bitmap2);
            lstbitmap.Add(bitmap3);
            return lstbitmap;
        }
    

    Good luck!

    0 讨论(0)
  • 2020-11-29 08:23

    I had a similar problem. With this function you can merge multiple Bitmap's into a single image

        private Bitmap MergeImages(IEnumerable<Bitmap> images)
        {
            var enumerable = images as IList<Bitmap> ?? images.ToList();
    
            var width = 0;
            var height = 0;
    
            foreach (var image in enumerable)
            {
                width += image.Width;
                height = image.Height > height
                    ? image.Height
                    : height;
            }
    
            var bitmap = new Bitmap(width, height);
            using (var g = Graphics.FromImage(bitmap))
            {
                var localWidth = 0;
                foreach (var image in enumerable)
                {
                    g.DrawImage(image, localWidth, 0);
                    localWidth += image.Width;
                }
            }
            return bitmap;
        }
    
    0 讨论(0)
提交回复
热议问题