/// <summary> /// 合并4张图片 /// </summary> /// <param name="image1"></param> /// <param name="image2"></param> /// <param name="image3"></param> /// <param name="image4"></param> /// <param name="layout"></param> /// <returns></returns> public static Image Merge4Images(Image image1, Image image2, Image image3, Image image4, Merge4LayoutEnum layout = Merge4LayoutEnum.Merge4S, int size = 250) { var width = size; var height = size; var pf = PixelFormat.Format32bppArgb; using (var bg = new Bitmap(width, height, pf)) { using (var g = Graphics.FromImage(bg)) { g.FillRectangle((Brush)Brushes.White, 0, 0, width, height);//全幅背景为白色 switch (layout) { /// <summary> /// 4张图片,上面一个长方形,下面2个正方形并排 /// ——————————————————— /// | | | /// | S1 | S2 | /// | | | /// ——————————————————— /// | | | /// | S3 | S4 | /// | | | /// ——————————————————— /// </summary> case Merge4LayoutEnum.Merge4S: { using (var img1 = ZoomToSqure(image1, size)) { var newHeight = height / 2; // =125 var newWidth = width / 2; // =125 var srcWidth = img1.Width; // =250 var srcHeight = img1.Height; // =250 g.DrawImage(img1, new Rectangle(0, 0, newWidth, newHeight), new Rectangle(0, 0, srcWidth, srcHeight), GraphicsUnit.Pixel); } using (var img2 = ZoomToSqure(image2, size)) { var newHeight = height / 2; // =125 var newWidth = width / 2; // =125 var srcWidth = img2.Width; // =250 var srcHeight = img2.Height; // =250 g.DrawImage(img2, new Rectangle(width / 2, 0, newWidth, newHeight), new Rectangle(0, 0, srcWidth, srcHeight), GraphicsUnit.Pixel); } using (var img3 = ZoomToSqure(image3, size)) { var newHeight = height / 2; // =125 var newWidth = width / 2; // =125 var srcWidth = img3.Width; // =250 var srcHeight = img3.Height; // =250 g.DrawImage(img3, new Rectangle(0, height / 2, newWidth, newHeight), new Rectangle(0, 0, srcWidth, srcHeight), GraphicsUnit.Pixel); } using (var img4 = ZoomToSqure(image4, size)) { var newHeight = height / 2; // =125 var newWidth = width / 2; // =125 var srcWidth = img4.Width; // =250 var srcHeight = img4.Height; // =250 g.DrawImage(img4, new Rectangle(width / 2, height / 2, newWidth, newHeight), new Rectangle(0, 0, srcWidth, srcHeight), GraphicsUnit.Pixel); } } break; } g.Save(); image1.Dispose(); image2.Dispose(); image3.Dispose(); image4.Dispose(); } using (var ms = new MemoryStream()) { bg.Save(ms, ImageFormat.Png); var buffers = ms.ToArray(); return(ConvertToImage(buffers)); } } }
/// <summary> /// 合并4张网络图片 /// </summary> /// <param name="image1Url"></param> /// <param name="image2Url"></param> /// <param name="image3Url"></param> /// <param name="image4Url"></param> /// <param name="layout"></param> /// <returns></returns> public static byte[] Merge4Images(string image1Url, string image2Url, string image3Url, string image4Url, Merge4LayoutEnum layout = Merge4LayoutEnum.Merge4S, int size = 250) { var image1 = Download(image1Url); var image2 = Download(image2Url); var image3 = Download(image3Url); var image4 = Download(image4Url); return(Merge4Images(image1, image2, image3, image4, layout, size)); }
/// <summary> /// 合并4张图片 /// </summary> /// <param name="image1"></param> /// <param name="image2"></param> /// <param name="image3"></param> /// <param name="image4"></param> /// <param name="layout"></param> /// <returns></returns> public static byte[] Merge4Images(byte[] image1, byte[] image2, byte[] image3, byte[] image4, Merge4LayoutEnum layout = Merge4LayoutEnum.Merge4S, int size = 250) { var image = Merge4Images(ConvertToImage(image1), ConvertToImage(image2), ConvertToImage(image3), ConvertToImage(image4), layout, size); var buffers = ConvertToByte(image); image.Dispose(); return(buffers); }
private static void testMerge4(string type, string img1, string img2, string img3, string img4, Merge4LayoutEnum layout = Merge4LayoutEnum.Merge4S) { var m1 = MergeProvider.Merge4Images(img1, img2, img3, img4, layout, 250); var image1 = MergeProvider.ConvertToImage(m1); var m1Path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, type + "-" + layout.ToString() + ".png"); if (File.Exists(m1Path)) { File.Delete(m1Path); } image1.Save(m1Path); }