
实现原理:根据C#内置的图形处理的类库进行图片的合成
代码实现:
using System.Drawing;
using System.Drawing.Imaging;
public string CreateGroupLogo(int logoNum)
{
//头像个数
int Num = logoNum; string SavePath = Server.MapPath("/Content/Apps/GroupLogo/");
string LogoName = "Grouplogo.png";
//新建一个底层图层
int width = 200, height = 200;
Bitmap RawBm = new Bitmap(width, height);
Graphics g = Graphics.FromImage(RawBm);
// 底色设置
g.Clear(Color.Gray);
//定义一个区域
int rWidth = 50, rHeight = 50;
Rectangle rg = new Rectangle(0, 0, rWidth, rHeight);
//头像个数
switch (Num)
{
case 1:
Rectangle rg1 = new Rectangle(50, 50, 100, 100);
Bitmap bm1 = new Bitmap(SavePath + "1.jpg");
g.DrawImage(bm1, rg1);
RawBm.Save(SavePath + LogoName, ImageFormat.Png);
break;
case 2:
Rectangle rg2_1 = new Rectangle(7, 55, 90, 90);
Bitmap bm2_1 = new Bitmap(SavePath + "1.jpg");
Rectangle rg2_2 = new Rectangle(104, 55, 90, 90);
Bitmap bm2_2 = new Bitmap(SavePath + "1.jpg");
g.DrawImage(bm2_1, rg2_1);
g.DrawImage(bm2_2, rg2_2);
RawBm.Save(SavePath + LogoName, ImageFormat.Png);
break;
case 3:
Rectangle rg3_1 = new Rectangle(55, 7, 90, 90);
Bitmap bm3_1 = new Bitmap(SavePath + "1.jpg");
Rectangle rg3_2 = new Rectangle(7, 105, 90, 90);
Bitmap bm3_2 = new Bitmap(SavePath + "1.jpg");
Rectangle rg3_3 = new Rectangle(104, 105, 90, 90);
Bitmap bm3_3 = new Bitmap(SavePath + "1.jpg");
g.DrawImage(bm3_1, rg3_1);
g.DrawImage(bm3_2, rg3_2);
g.DrawImage(bm3_3, rg3_3);
RawBm.Save(SavePath + LogoName, ImageFormat.Png);
break;
case 4:
Rectangle rg4_1 = new Rectangle(7, 7, 90, 90);
Bitmap bm4_1 = new Bitmap(SavePath + "1.jpg");
Rectangle rg4_2 = new Rectangle(104, 7, 90, 90);
Bitmap bm4_2 = new Bitmap(SavePath + "1.jpg");
Rectangle rg4_3 = new Rectangle(7, 105, 90, 90);
Bitmap bm4_3 = new Bitmap(SavePath + "1.jpg");
Rectangle rg4_4 = new Rectangle(104, 105, 90, 90);
Bitmap bm4_4 = new Bitmap(SavePath + "1.jpg");
g.DrawImage(bm4_1, rg4_1);
g.DrawImage(bm4_2, rg4_2);
g.DrawImage(bm4_3, rg4_3);
g.DrawImage(bm4_4, rg4_4);
RawBm.Save(SavePath + LogoName, ImageFormat.Png);
break;
case 5:
Rectangle rg5_1 = new Rectangle(38, 35, 60, 60);
Bitmap bm5_1 = new Bitmap(SavePath + "1.jpg");
Rectangle rg5_2 = new Rectangle(103, 35, 60, 60);
Bitmap bm5_2 = new Bitmap(SavePath + "1.jpg");
Rectangle rg5_3 = new Rectangle(5, 105, 60, 60);
Bitmap bm5_3 = new Bitmap(SavePath + "1.jpg");
Rectangle rg5_4 = new Rectangle(70, 105, 60, 60);
Bitmap bm5_4 = new Bitmap(SavePath + "1.jpg");
Rectangle rg5_5 = new Rectangle(135, 105, 60, 60);
Bitmap bm5_5 = new Bitmap(SavePath + "1.jpg");
g.DrawImage(bm5_1, rg5_1);
g.DrawImage(bm5_2, rg5_2);
g.DrawImage(bm5_3, rg5_3);
g.DrawImage(bm5_4, rg5_4);
g.DrawImage(bm5_5, rg5_5);
RawBm.Save(SavePath + LogoName, ImageFormat.Png);
break;
case 6:
Rectangle rg6_1 = new Rectangle(5, 38, 60, 60);
Bitmap bm6_1 = new Bitmap(SavePath + "1.jpg");
Rectangle rg6_2 = new Rectangle(70, 38, 60, 60);
Bitmap bm6_2 = new Bitmap(SavePath + "1.jpg");
Rectangle rg6_3 = new Rectangle(135, 38, 60, 60);
Bitmap bm6_3 = new Bitmap(SavePath + "1.jpg");
Rectangle rg6_4 = new Rectangle(5, 104, 60, 60);
Bitmap bm6_4 = new Bitmap(SavePath + "1.jpg");
Rectangle rg6_5 = new Rectangle(70, 104, 60, 60);
Bitmap bm6_5 = new Bitmap(SavePath + "1.jpg");
Rectangle rg6_6 = new Rectangle(135, 104, 60, 60);
Bitmap bm6_6 = new Bitmap(SavePath + "1.jpg");
g.DrawImage(bm6_1, rg6_1);
g.DrawImage(bm6_2, rg6_2);
g.DrawImage(bm6_3, rg6_3);
g.DrawImage(bm6_4, rg6_4);
g.DrawImage(bm6_5, rg6_5);
g.DrawImage(bm6_6, rg6_6);
RawBm.Save(SavePath + LogoName, ImageFormat.Png);
break;
case 7:
Rectangle rg7_1 = new Rectangle(70, 5, 60, 60);
Bitmap bm7_1 = new Bitmap(SavePath + "1.jpg");
Rectangle rg7_2 = new Rectangle(5, 70, 60, 60);
Bitmap bm7_2 = new Bitmap(SavePath + "1.jpg");
Rectangle rg7_3 = new Rectangle(70, 70, 60, 60);
Bitmap bm7_3 = new Bitmap(SavePath + "1.jpg");
Rectangle rg7_4 = new Rectangle(135, 70, 60, 60);
Bitmap bm7_4 = new Bitmap(SavePath + "1.jpg");
Rectangle rg7_5 = new Rectangle(5, 135, 60, 60);
Bitmap bm7_5 = new Bitmap(SavePath + "1.jpg");
Rectangle rg7_6 = new Rectangle(70, 135, 60, 60);
Bitmap bm7_6 = new Bitmap(SavePath + "1.jpg");
Rectangle rg7_7 = new Rectangle(135, 135, 60, 60);
Bitmap bm7_7 = new Bitmap(SavePath + "1.jpg");
g.DrawImage(bm7_1, rg7_1);
g.DrawImage(bm7_2, rg7_2);
g.DrawImage(bm7_3, rg7_3);
g.DrawImage(bm7_4, rg7_4);
g.DrawImage(bm7_5, rg7_5);
g.DrawImage(bm7_6, rg7_6);
g.DrawImage(bm7_7, rg7_7);
RawBm.Save(SavePath + LogoName, ImageFormat.Png);
break;
case 8:
Rectangle rg8_1 = new Rectangle(38, 5, 60, 60);
Bitmap bm8_1 = new Bitmap(SavePath + "1.jpg");
Rectangle rg8_2 = new Rectangle(103, 5, 60, 60);
Bitmap bm8_2 = new Bitmap(SavePath + "1.jpg");
Rectangle rg8_3 = new Rectangle(5, 70, 60, 60);
Bitmap bm8_3 = new Bitmap(SavePath + "1.jpg");
Rectangle rg8_4 = new Rectangle(70, 70, 60, 60);
Bitmap bm8_4 = new Bitmap(SavePath + "1.jpg");
Rectangle rg8_5 = new Rectangle(135, 70, 60, 60);
Bitmap bm8_5 = new Bitmap(SavePath + "1.jpg");
Rectangle rg8_6 = new Rectangle(5, 135, 60, 60);
Bitmap bm8_6 = new Bitmap(SavePath + "1.jpg");
Rectangle rg8_7 = new Rectangle(70, 135, 60, 60);
Bitmap bm8_7 = new Bitmap(SavePath + "1.jpg");
Rectangle rg8_8 = new Rectangle(135, 135, 60, 60);
Bitmap bm8_8 = new Bitmap(SavePath + "1.jpg");
g.DrawImage(bm8_1, rg8_1);
g.DrawImage(bm8_2, rg8_2);
g.DrawImage(bm8_3, rg8_3);
g.DrawImage(bm8_4, rg8_4);
g.DrawImage(bm8_5, rg8_5);
g.DrawImage(bm8_6, rg8_6);
g.DrawImage(bm8_7, rg8_7);
g.DrawImage(bm8_8, rg8_8);
RawBm.Save(SavePath + LogoName, ImageFormat.Png);
break;
case 9:
Rectangle rg9_1 = new Rectangle(5, 5, 60, 60);
Bitmap bm9_1 = new Bitmap(SavePath + "1.jpg");
Rectangle rg9_2 = new Rectangle(70, 5, 60, 60);
Bitmap bm9_2 = new Bitmap(SavePath + "1.jpg");
Rectangle rg9_3 = new Rectangle(135, 5, 60, 60);
Bitmap bm9_3 = new Bitmap(SavePath + "1.jpg");
Rectangle rg9_4 = new Rectangle(5, 70, 60, 60);
Bitmap bm9_4 = new Bitmap(SavePath + "1.jpg");
Rectangle rg9_5 = new Rectangle(70, 70, 60, 60);
Bitmap bm9_5 = new Bitmap(SavePath + "1.jpg");
Rectangle rg9_6 = new Rectangle(135, 70, 60, 60);
Bitmap bm9_6 = new Bitmap(SavePath + "1.jpg");
Rectangle rg9_7 = new Rectangle(5, 135, 60, 60);
Bitmap bm9_7 = new Bitmap(SavePath + "1.jpg");
Rectangle rg9_8 = new Rectangle(70, 135, 60, 60);
Bitmap bm9_8 = new Bitmap(SavePath + "1.jpg");
Rectangle rg9_9 = new Rectangle(135, 135, 60, 60);
Bitmap bm9_9 = new Bitmap(SavePath + "1.jpg");
g.DrawImage(bm9_1, rg9_1);
g.DrawImage(bm9_2, rg9_2);
g.DrawImage(bm9_3, rg9_3);
g.DrawImage(bm9_4, rg9_4);
g.DrawImage(bm9_5, rg9_5);
g.DrawImage(bm9_6, rg9_6);
g.DrawImage(bm9_7, rg9_7);
g.DrawImage(bm9_8, rg9_8);
g.DrawImage(bm9_9, rg9_9);
RawBm.Save(SavePath + LogoName, ImageFormat.Png);
break;
default:
break;
}
return "";
}
最后,上述代码是最基本的实现,可根据具体情况进行修改,后续会更新更加高效的写法,避免一些重复代码的发生