/// <summary> /// 提供保存图片方法 /// </summary> /// <param name="imageByte">图片byte字节</param> /// <param name="folderName">文件夹</param> /// <param name="extName">后缀名{jpg,png}....</param> /// <param name="oldImageName">旧的文件名遇到default时跳过</param> /// <param name="tcp">tcp.CustomerId</param> /// <returns>图片名称</returns> internal string SaveImage(byte[] imageByte, string folderName, string extName, string oldImageName, TokenCacheProperty tcp) { string filePath = string.Empty; // 检查存放图片的目录是否存在,不存在则创建 var path = string.Format(@"{0}\{1}", AppDomain.CurrentDomain.BaseDirectory, folderName); Directory.CreateDirectory(path); // 生成随机且唯一的image文件名,将数据保存 string imageFile = string.Format("{0}_{1}.{2}", PwdMD5.StringToMD5(DateTime.Now.ToString()), tcp.CustomerId, extName); // 打开文件,写入图片数据 filePath = string.Format(@"{0}\{1}", path, imageFile); FileStream fs = new System.IO.FileStream(filePath, FileMode.Create, FileAccess.Write); fs.Write(imageByte, 0, imageByte.Length); fs.Close(); if (!oldImageName.ToLower().Contains("default")) { File.Delete(path + "\\" + oldImageName); } return(imageFile); }
/// <summary> /// 修改通道的默认图片 /// </summary> /// <param name="channelId">通道的id</param> /// <param name="imageByte">图片的二进制数据</param> /// <param name="extName">图片扩展名</param> /// <param name="customerToken">用户的token</param> /// <returns></returns> public ResponseBaseDto UpdateChanneImagePathlByChannelId(int channelId, byte[] imageByte, string extName, string customerToken, ref string imagePath) { ResponseBaseDto dto = new ResponseBaseDto(); UserTokenCache utc = UserTokenCache.GetInstance(); TokenCacheProperty tcp = new TokenCacheProperty(); OperaterLog oLog = new OperaterLog(); oLog.Action = "更新通道图片"; oLog.TargetId = channelId; try { if (utc.IsValid(customerToken) == false) { dto.Code = (int)CodeEnum.ServerNoToken; dto.Message = "用户token已失效,请重新登录后继续"; return(dto); } dto = bllHelper.CheckCustomer(dto, customerToken, ref tcp); if (dto.Code != 0) { oLog.TargetType = (int)OperaterLogEnum.Channel; oLog.Remarks = dto.Message; oLog.Result = dto.Code; bllHelper.AddOperaterLog(oLog, tcp); return(dto); } else { //大图(源图) //检查存放源图片的目录是否存在,不存在则创建 var bigImagePath = string.Format(@"{0}\channelImage", AppDomain.CurrentDomain.BaseDirectory); Directory.CreateDirectory(bigImagePath); //小图(封面) //检查存放图片的目录是否存在,不存在则创建 var smallImagepath = string.Format(@"{0}\channelImage\small", AppDomain.CurrentDomain.BaseDirectory); Directory.CreateDirectory(smallImagepath); //生成随机且唯一的image文件名,将数据保存 string imageFile = string.Format("{0}_{1}.{2}", PwdMD5.StringToMD5(DateTime.Now.ToString()), channelId, extName); //打开文件,写入图片数据 string bigImageFullPath = string.Format(@"{0}\{1}", bigImagePath, imageFile); string smallImageFullPath = string.Format(@"{0}\{1}", smallImagepath, imageFile); FileStream bigfs = new System.IO.FileStream(bigImageFullPath, FileMode.Create, FileAccess.Write); bigfs.Write(imageByte, 0, imageByte.Length); bigfs.Close(); #region 将图片进行尺寸的压缩 byte[] dstImageByte; ImageConvertibleInfo icInfo = new ImageConvertibleInfo(); icInfo.srcByte = imageByte; icInfo.dstWidth = 320; // 目标图片像素宽 icInfo.dstHeight = 240; // 目标图片像素高 icInfo.dstFmt = extName; // 目标图片格式 int rs = 0; if ((rs = ImageConvertion.Convert(icInfo, out dstImageByte)) != 0) { myLog.WarnFormat("图片压缩成{0}失败,错误码:{1}", icInfo.dstFmt, rs); } else { imageByte = dstImageByte; // 将压缩后的图片数据重新赋给imageByte } #endregion FileStream smallfs = new System.IO.FileStream(smallImageFullPath, FileMode.Create, FileAccess.Write); smallfs.Write(dstImageByte, 0, imageByte.Length); smallfs.Close(); // 通过通道的id找到数据库记录,将文件名更新 Channel channel = new Channel() { ChannelId = channelId }; IList <Channel> channelFlag = channelServer.SelectChannelByChannelId(channel); if (channelFlag == null) { dto.Code = (int)CodeEnum.NoHardWare; dto.Message = "需要修改的通道不存在"; } else { // 将原来指向的文件名删除。 // 如果是默认的文件名则不做删除。 if (channelFlag[0].ImagePath != null && !channelFlag[0].ImagePath.Contains("default")) { File.Delete(bigImagePath + "\\" + channelFlag[0].ImagePath); File.Delete(smallImagepath + "\\" + channelFlag[0].ImagePath); } channelFlag[0].ImagePath = imageFile; channelServer.UpdateChannel(channelFlag[0]); dto.Code = 0; dto.Message = "修改通道图片完成!"; // 返回的图片路径是: "channelImage/图片名.jpg" imagePath = string.Format(@"channelImage/{0}", imageFile); } }/*end if(utc.IsValid(customerToken) == false)*/ } catch (Exception ex) { dto.Code = (int)CodeEnum.ApplicationErr; dto.Message = "网络异常,请刷新页面后继续"; myLog.WarnFormat("UpdateChanneImagePathlByChannelId方法异常,通道id:{0}", ex, channelId); } oLog.TargetType = (int)OperaterLogEnum.Channel; oLog.Remarks = dto.Message; oLog.Result = dto.Code; bllHelper.AddOperaterLog(oLog, tcp); return(dto); }