コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }