【问题标题】:Combine two Images into one new Image将两张图片合并为一张新图片
【发布时间】:2011-11-04 14:40:09
【问题描述】:

我有两个不同尺寸的 JPEG 文件:

图像1(宽度1,高度1)

图像2(宽度2,高度2)

我想创建 Image3 (Width3, Height3),左边是 Image1,右边是 Image2。

【问题讨论】:

    标签: c# .net image bitmap


    【解决方案1】:

    这样的东西会给你一个新的图像,两个原始图像并排。

    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);
    }
    

    【讨论】:

    • 是 .DrawImage() 调用的结果存储在位图对象中吗?
    • 正确...g是位图的图形上下文。
    【解决方案2】:

    我遇到了类似的问题。 使用此功能,您可以将多个位图合并为单个图像

        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;
        }
    

    【讨论】:

      【解决方案3】:

      你可以试试

      您需要使用的库

      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;
          }
      

      祝你好运!

      【讨论】:

        猜你喜欢
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        • 2011-10-31
        • 2016-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多