首页 > 编程知识 正文

多图合成一张图片

时间:2023-05-04 22:53:55 阅读:280029 作者:4847

#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, "文件名称");

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。