#region 多图片合成
/// <summary>
/// 插入图像
/// </summary>
/// <param name="srcBmp">原始图像</param>
/// <param name="insertBmp">需要要插入的图像</param>
/// <param name="p">位置</param>
/// <param name="imgpath">保存路径</param>
/// <param name="filename">文件名称</param>
/// <returns></returns>
public string InsertImage(Bitmap srcBmp, List<Bitmap> insertBmp, List<Point> p, string imgpath, string filename)
{
string resturnfilename = "";
try
{
Bitmap temp = (Bitmap)srcBmp;
Bitmap bmap = (Bitmap)temp.Clone();
Graphics gr = Graphics.FromImage(bmap);
for (int i = 0; i < insertBmp.Count; i++)
{
Rectangle rect = new Rectangle(p[i].X, p[i].Y, insertBmp[i].Width, insertBmp[i].Height);
gr.DrawImage(insertBmp[i], rect);
}
//创建一个Endoder对象
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
// 创建一个EncoderParameters对象.
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 100L);//这里的50L用来设置保存时的图片质量
//测试时400多K的图片保存为100多K,图片失真也不是很厉害
myEncoderParameters.Param[0] = myEncoderParameter;
string savePath = filename + ".jpeg";
bmap.Save(imgpath + savePath, jgpEncoder, myEncoderParameters);
resturnfilename = savePath;
}
catch (Exception ex)
{
resturnfilename = "";
}
return resturnfilename;
}
/// <summary>
/// 获取特定的图像编解码信息
/// </summary>
/// <param name="format"></param>
/// <returns></returns>
private static ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
#endregion
//调用
List<Point> plist = new List<Point>(); //坐标集合
List<Bitmap> blist = new List<Bitmap>(); //图片及大小集合【对应上述坐标对应】
//处理点位
Point point1 = new Point(PointX, PointY);
plist.Add(point1);
//处理图片大小
string DownUrl = Server.MapPath("//" + item.DownUrl);
Image image = Image.FromFile(DownUrl);
Bitmap bitmap1 = new Bitmap(image, location.Width, location.Height);
blist.Add(bitmap1);
string DownUrl2 = Server.MapPath("//" + resources.DownUrl);
Image image2 = Image.FromFile(DownUrl2);
Bitmap bitmap2 = new Bitmap(image2);
string imgpath = Server.MapPath("\\SaleOver\\" + GroupInfoPID + "\\"); //保存路径
if (!Directory.Exists(imgpath))
{
Directory.CreateDirectory(imgpath);
}
string resurnfilename = InsertImage(bitmap2, blist, plist, imgpath, "文件名称");