/// <summary> /// 保存新图片 /// </summary> /// <param name="path">新图片保存路径</param> /// <param name="dt">数据源</param> /// <param name="yZ"></param> /// <param name="yzpath">水印图片</param> public void SaveNewPicture(string path, DataTable dt, Create_YZ yZ, string yzpath) { for (int i = 0; i < dt.Rows.Count; i++) { string newpath = path + "\\" + dt.Rows[i]["phurl"].ToString().Trim();//新图片的物理路径 if (!System.IO.File.Exists(newpath)) { try { string urlpt = dt.Rows[i]["wzlj"].ToString().Trim(); //Log.Debug("出库单图片", "图片完整路径:" + urlpt); int begin = urlpt.LastIndexOf("/") + 1; //Log.Debug("出库单图片", "begin:" + begin); int length = urlpt.Length - begin; //Log.Debug("出库单图片", "length:" + length); string cutout = urlpt.Substring(begin, length); //Log.Debug("出库单图片", "截取:" + cutout); cutout = HttpUtility.UrlEncode(cutout); cutout = cutout.Replace("+", "%20"); //Log.Debug("出库单图片", "截取转码:" + cutout); urlpt = urlpt.Substring(0, begin) + cutout; //Sk_B2BAPI.App_Code.Log.Debug("出库单图片", "重新拼接:" + urlpt); WebRequest wr = WebRequest.Create(urlpt); HttpWebResponse wresp = (HttpWebResponse)wr.GetResponse(); Stream s = wresp.GetResponseStream(); System.Drawing.Image img = System.Drawing.Image.FromStream(s); //Sk_B2BAPI.App_Code.Log.Debug("出库单图片", "新图片的物理路径:" + newpath); //Sk_B2BAPI.App_Code.Log.Debug("出库单图片", "加水印之前:" + yzpath); yZ.BuildWatermark(img, yzpath, "", newpath); } catch (Exception ex) { LogQueue.Write(LogType.Error, "QualityInspectionReport/SaveNewPicture", ex.ToString()); continue; } } } }
/// <summary> /// 将图片加水印下载至本地 /// </summary> /// <param name="sqlvalue">一级(客户、商品或其它)</param> /// <param name="SqlType">类型</param> /// <param name="dt">数据源</param> /// <param name="ImgUrl">水印图片路径</param> /// <param name="arguments">二级(批号或其它)</param> private void UplaodImg(string sqlvalue, string SqlType, DataTable dt, string ImgUrl, string arguments) { try { if (dt.Rows.Count > 0) { string str = HttpRuntime.AppDomainAppPath; //存放质检图片路径 string filePath = str + "FPImgupload"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } //创建临时文件夹(一级文件夹) string url = str + "FPImgupload" + "\\" + SqlType + "\\" + sqlvalue; if (!FileExists(url)) { LogQueue.Write(LogType.Error, "QualityInspectionReport/UplaodImg", "一级文件夹创建失败"); throw new Exception("一级文件夹创建失败"); } Create_YZ YZ = new Create_YZ(); string path = filePath + "\\" + SqlType + "\\" + sqlvalue;//带印章质检报告图片路径 string yzpath = str + ImgUrl; System.Drawing.Image image1 = new System.Drawing.Bitmap(829, 1169); if (!dt.Columns.Contains("grp")) { throw new Exception("数据源表缺少必须分组列:grp"); } //根据二级将图片分组 grp为数据库分组字段,不可删除 var query = from g in dt.AsEnumerable() group g by new { g1 = g.Field <string>("grp") } into source select new { pihao = source.Key.g1 }; //重置路径 string reset = path; foreach (var item in query) { ////每次循环重置路径 path = reset; url = str + "FPImgupload" + "\\" + SqlType + "\\" + sqlvalue + "\\" + item.pihao; if (!FileExists(url)) { LogQueue.Write(LogType.Error, "QualityInspectionReport/UplaodImg", "二级文件夹创建失败"); throw new Exception("二级文件夹创建失败"); } //拼接上分组字段 path = path + "\\" + item.pihao; //Log.Debug("path+", path); var columns = dt.AsEnumerable().Where <DataRow>(r => r["grp"].ToString() == item.pihao.ToString()); DataTable table = dt.Clone(); foreach (DataRow dr in columns) { table.ImportRow(dr); } SaveNewPicture(path, table, YZ, yzpath); } } } catch (Exception ex) { LogQueue.Write(LogType.Error, "QualityInspectionReport/UplaodImg", ex.ToString()); throw new Exception(ex.ToString()); } }