Example #1
0
        /// <summary>
        /// 处理图片请求
        /// </summary>
        /// <param name="requestMessage"></param>
        /// <returns></returns>
        public override IResponseMessageBase OnImageRequest(RequestMessageImage requestMessage)
        {
            var content = new
            {
                msgType = "image",
                mediaId = requestMessage.MediaId
            };

            var data = new RequestMsgData();

            data.MsgId        = requestMessage.MsgId;
            data.Content      = Newtonsoft.Json.JsonConvert.SerializeObject(content);
            data.CreateTime   = requestMessage.CreateTime;
            data.FromUserName = requestMessage.FromUserName;
            data.ToUserName   = requestMessage.ToUserName;
            data.MsgType      = requestMessage.MsgType;
            db.AddToRequestMsgData(data);
            db.SaveChanges();

            var accessToken = Senparc.Weixin.MP.Containers.AccessTokenContainer.TryGetAccessToken(appId, appSecret);
            var fileName    = CustomerMessage.GetCachePathForTemporaryMedia(requestMessage.MediaId);

            using (FileStream fs = new FileStream(fileName, FileMode.Create))
            {
                MediaApi.Get(accessToken, requestMessage.MediaId, fs);
            }

            return(null);
        }
Example #2
0
        public void GetStreamTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            UploadTemporaryMediaTest();//上传

            using (MemoryStream ms = new MemoryStream())
            {
                MediaApi.Get(accessToken, mediaId, ms);
                Assert.IsTrue(ms.Length > 0);

                //保存到文件

#if NETSTANDARD2_0 || NETCOREAPP2_0 || NETCOREAPP2_1 || NETCOREAPP2_2
                var fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\..\\testpic_{0}.core20.jpg".FormatWith(SystemTime.Now.ToString("yyyyMMddHHmmss")));
#else
                var fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\testpic_{0}.net45.jpg".FormatWith(SystemTime.Now.ToString("yyyyMMddHHmmss")));
#endif

                using (FileStream fs = new FileStream(fileName, FileMode.Create))
                {
                    ms.Position = 0;
                    byte[] buffer    = new byte[1024];
                    int    bytesRead = 0;
                    while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) != 0)
                    {
                        fs.Write(buffer, 0, bytesRead);
                    }
                    fs.Flush();
                }

                Assert.IsTrue(File.Exists(fileName));
            }
        }
Example #3
0
        public void GetImageTest()
        {
            string mediaId     = UploadImageTest();
            var    accessToken = AccessTokenContainer.GetToken(_corpId);

            using (MemoryStream ms = new MemoryStream())
            {
                MediaApi.Get(accessToken, mediaId, ms);
                Assert.IsTrue(ms.Length > 0);

                //保存到文件
                var fileName = string.Format(@"E:\testpic_{0}.jpg", DateTime.Now.Ticks);
                using (FileStream fs = new FileStream(fileName, FileMode.Create))
                {
                    ms.Position = 0;
                    byte[] buffer    = new byte[1024];
                    int    bytesRead = 0;
                    while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) != 0)
                    {
                        fs.Write(buffer, 0, bytesRead);
                    }
                    fs.Flush();
                }

                Assert.IsTrue(File.Exists(fileName));
            }
        }
        private static void SaveImage(object taskO)
        {
            var taskObject     = taskO as TaskObject;
            var thisObject     = taskObject.thisObject as QyCustomMessageHandler;
            var requestMessage = taskObject.parameter1 as RequestMessageImage;


            LogManager.GetLogger(thisObject.GetType()).Debug("Begin SaveImage from Wechat Client");

            //WebClient webclient = new WebClient();
            //var picData = await webclient.DownloadDataTaskAsync(requestMessage.PicUrl);
            //string picType = requestMessage.PicUrl.Substring(requestMessage.PicUrl.LastIndexOf('.') + 1);

            //var img = ImageHelper.BytesToImage(picData);

            using (MemoryStream stream = new MemoryStream())
            {
                string filename = "";
                try
                {
                    LogManager.GetLogger(thisObject.GetType()).Debug("MediaApi.Get");
                    MediaApi.Get(GetToken(requestMessage.AgentID), requestMessage.MediaId, stream);
                    stream.Seek(0, SeekOrigin.Begin);

                    //var imageBytes = stream.ToArray();
                    //var imageFromUser = ImageHelper.BytesToImage(imageBytes);

                    //LogManager.GetLogger(this.GetType()).Debug("ImageUtility.MakeThumbnail");

                    filename = USER_IMAGE_SAVE_FOLDER_PATH + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".jpg";
                    string strPath = thisObject.MapPath("/" + filename);

                    //ImageUtility.MakeThumbnail(null, stream, strPath, 900, 0, "W", 0, true);//update by anrew. 6/12
                    //thumbnailImageFromUser.Save(strPath);
                    var image = System.Drawing.Image.FromStream(stream);
                    image.Save(strPath);
                    //LogManager.GetLogger(this.GetType()).Debug("thumbnailImageFromUser is NULL? - " + (thumbnailImageFromUser == null));

                    LogManager.GetLogger(thisObject.GetType()).Debug("new ArticleImages()");
                    LogManager.GetLogger(thisObject.GetType()).Debug("AppId: {0} CreatedUserID: {1}", requestMessage.AgentID, requestMessage.FromUserName);
                    var articleImage = new ArticleImages()
                    {
                        AppId          = requestMessage.AgentID,
                        UploadedUserId = requestMessage.FromUserName,
                        ImageContent   = System.IO.File.ReadAllBytes(strPath),
                        CreatedDate    = DateTime.Now,
                        ImageName      = filename
                    };

                    LogManager.GetLogger(thisObject.GetType()).Debug("_articleImagesService.Insert");
                    thisObject._articleImagesService.Repository.Insert(articleImage);
                }
                catch (Exception ex)
                {
                    LogManager.GetLogger(thisObject.GetType()).Error(ex.Message + "\r\n Filename:" + filename + "\r\n" + ex.InnerException + "\r\n" + ex.StackTrace);
                }
            }

            LogManager.GetLogger(thisObject.GetType()).Debug("End SaveImage from Wechat Client");
        }
Example #5
0
        public ActionResult ShowImage(string mediaId)
        {
            var smallFileName  = CustomerMessage.GetCacheSmallPathForTemporaryMedia(mediaId);
            var targetFileName = smallFileName;

            if (!System.IO.File.Exists(smallFileName))
            {                                         //如果没有小图,说明没进行缩小处理过
                var fileName = CustomerMessage.GetCachePathForTemporaryMedia(mediaId);
                if (!System.IO.File.Exists(fileName)) //如果没有原图,则需要下载下来
                {
                    var accessToken = GetAccessToken();
                    using (FileStream createFs = new FileStream(fileName, FileMode.Create))
                    {
                        MediaApi.Get(accessToken, mediaId, createFs);
                    }
                }
                try
                {
                    ResizeImage(fileName, smallFileName);
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex, "缩放出错,文件名:{0}", fileName);
                    targetFileName = fileName; //显示的时候用原图显示。
                }
            }

            FileStream fs = new FileStream(targetFileName, FileMode.Open);

            return(File(fs, "image/jpeg"));
        }
Example #6
0
        /// <summary>
        /// 获取微信的图片;
        /// </summary>
        /// <param name="mediaId"></param>
        /// <returns></returns>
        public MemoryStream GetMediaStream(string mediaId)
        {
            MemoryStream stream = new MemoryStream();

            MediaApi.Get(AccessToken, mediaId, stream);
            return(stream);
        }
        public IActionResult Post()
        {
            var mediaId = Request.Form["mediaId"];

            var picType = Request.Form["picType"];

            string upLoadPath = Path.Combine(hostingEnv.WebRootPath, "wximg/");
            var    path       = MediaApi.Get(Config.SenparcWeixinSetting.WeixinAppId, mediaId, upLoadPath);

            path = "/wximg/" + Path.GetFileName(path);
            return(Json(ReturnHelper.SuccessMsgDataDCountHttpCode("success", path)));
        }
Example #8
0
        public string GetMediaFile(string mediaId, string strType = ".jpg")
        {
            string path = AppContext.BaseDirectory;

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            string     mdfile = path + Guid.NewGuid().ToString() + strType;
            FileStream fs     = new FileStream(mdfile, FileMode.Create);

            MediaApi.Get(GetToken(), mediaId, fs);
            fs.Close();
            return(mdfile);
        }
Example #9
0
        public JsonResult SaveImageToServer(string[] mediaIds)
        {
            var dir  = Server.MapPath("~/Upload/Weixin");
            var urls = new List <string>();

            foreach (var mediaId in mediaIds)
            {
                var fullFileName = MediaApi.Get(appId, mediaId, dir);
                var fileName     = Path.GetFileName(fullFileName);
                var url          = string.Format("{0}://{1}{2}{3}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~/Upload/"), fileName);
                urls.Add(url);
            }
            var data = new { urls = urls };

            return(Json(data));
        }
Example #10
0
 /// <summary>
 /// 从微信照片服务器取得图片并保存到本地
 /// </summary>
 /// <param name="id">远程图片id</param>
 /// <param name="filePath">文件路径</param>
 /// <param name="fileName">文件名</param>
 /// <param name="corpId">企业微信CorpId</param>
 /// <param name="secret">企业微信Secret</param>
 /// <returns></returns>
 public static bool SaveFileByWeixin(string id, string filePath, string fileName, string corpId, string secret)
 {
     try
     {
         using (var fileStream = new FileStream(filePath + fileName, FileMode.Create))
         {
             string AccessToken = AccessTokenContainer.TryGetToken(corpId, secret);
             MediaApi.Get(AccessToken, id, fileStream);
         }
         return(true);
     }
     catch
     {
         return(false);
     }
 }
Example #11
0
        public IHttpActionResult UploadPhotos(Guid typeId)
        {
            var ids = HttpContext.Current.Request.Form["mediaIds"].Trim(',').Split(',');

            foreach (var mediaId in ids)
            {
                var fileName = DateTime.Now.ToString("yyyy-MM-dd");
                //文件保存的名字
                var fileSaveName = Guid.NewGuid().ToString("N") + ".png";
                //租户Id
                var dirName = TenantId.ToString();
                var path    = Path.Combine(HttpContext.Current.Server.MapPath("~/MediaFiles"), dirName);
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                path = Path.Combine(path, fileSaveName);
                //从临时素材获取
                using (var stream = File.Create(path))
                {
                    //TODO:切换SDK
                    MediaApi.Get(WeChatConfigManager.Current.GetAccessToken(), mediaId, stream);
                }
                //上传到永久素材
                var result = MediaApi.UploadForeverMedia(AccessToken, path);
                if (!string.IsNullOrWhiteSpace(result.errmsg))
                {
                    return(BadRequest(result.errmsg));
                }
                //写入数据
                var pic = new Site_Image
                {
                    IsFrontCover = !db.Site_Images.Any(p => p.ResourcesTypeId == typeId),
                    MediaId      = result.media_id,
                    Name         = fileName,
                    //站内地址
                    SiteUrl         = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName),
                    Url             = result.url,
                    ResourcesTypeId = typeId
                };
                SetModel(pic, default(Guid));
                db.Site_Images.Add(pic);
                db.SaveChanges();
            }
            return(Ok());
        }
Example #12
0
        public ActionResult UploadFile(string serverId, string filename)
        {
            string accessTokenOrAppId = AccessTokenContainer.TryGetAccessToken(AppId, AppSecret, false);
            string path = string.Concat(new object[] { "/upload/", DateTime.Now.Year, "/", DateTime.Now.Month.ToString("D2"), "/", DateTime.Now.Day.ToString("D2"), "/" });

            if (!Directory.Exists(base.Server.MapPath(path)))
            {
                Directory.CreateDirectory(base.Server.MapPath(path));
            }
            Guid       guid   = Guid.NewGuid();
            string     str3   = path + guid + ".jpg";
            FileStream stream = new FileStream(base.Server.MapPath(str3), FileMode.Create);

            MediaApi.Get(accessTokenOrAppId, serverId, stream);
            stream.Close();
            return(base.Content(JsonConvert.SerializeObject(new { path = str3 })));
        }
Example #13
0
 public void DownImageFromWeixinServer(string serverId, string savepath)
 {
     try
     {
         var    appid       = _settingManager.GetSettingValue(AppSettings.Weixin.AppId);
         var    appsecret   = _settingManager.GetSettingValue(AppSettings.Weixin.AppSecret);
         string accessToken = AccessTokenContainer.TryGetAccessToken(appid, appsecret, true);
         var    stream      = new MemoryStream();
         MediaApi.Get(accessToken, serverId, stream);
         Image image = Image.FromStream(stream);
         image.Save(savepath);
     }
     catch (Exception ex)
     {
         throw new UserFriendlyException("从微信服务器下载图片失败!");
     }
 }
Example #14
0
        public void GetDirTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            UploadTemporaryMediaTest();//上传


#if NETSTANDARD2_0 || NETCOREAPP2_0 || NETCOREAPP2_1 || NETCOREAPP2_2
            var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\..\\");
#else
            var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\");
#endif

            var fileName = MediaApi.Get(accessToken, mediaId, dir);

            Assert.IsTrue(File.Exists(fileName));

            Console.WriteLine("原始文件:" + fileName);
        }
Example #15
0
        private string GetFile(string serverid, string path)
        {
            try
            {
                string name = Guid.NewGuid().ToString("n").Substring(0, 8) + ".jpg";

                using (MemoryStream ms = new MemoryStream())
                {
                    MediaApi.Get(MPBasicSetting.AppID, serverid, ms);
                    SaveFile(path, name, ms.ToArray());
                }
                return(name);
            }
            catch (Exception e)
            {
                LogHelper.Log(e.Message);
            }
            return(string.Empty);
        }
Example #16
0
        public void GetVoiceTest()
        {
            string serverId = "IT41QWoGSnkt5fj01mK2ByhgRACBgvRW6fGP3bt9QAjH8vwqsra9qYJkj8LCXzNS";
            var    file     = SystemTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ".speex"; //ServerUtility.ContentRootMapPath("~/../")

            using (MemoryStream ms = new MemoryStream())
            {
                MediaApi.Get(base._appId, serverId, ms);

                //保存到文件
                ms.Position = 0;
                byte[] buffer    = new byte[1024];
                int    bytesRead = 0;
                //判断是否上传成功
                byte[] topBuffer = new byte[1];
                ms.Read(topBuffer, 0, 1);
                if (topBuffer[0] == '{')
                {
                    //写入日志
                    ms.Position = 0;
                    byte[] logBuffer = new byte[1024];
                    ms.Read(logBuffer, 0, logBuffer.Length);
                    string str = System.Text.Encoding.Default.GetString(logBuffer);
                    Console.WriteLine(str);
                    Assert.Fail();
                }
                else
                {
                    ms.Position = 0;

                    //创建目录
                    using (FileStream fs = new FileStream(file, FileMode.Create))
                    {
                        while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) != 0)
                        {
                            fs.Write(buffer, 0, bytesRead);
                        }
                        fs.Flush();
                    }
                }
            }
        }
        /// <summary>
        /// 处理语音请求
        /// </summary>
        /// <param name="requestMessage"></param>
        /// <returns></returns>
        public override IResponseMessageBase OnVoiceRequest(RequestMessageVoice requestMessage)
        {
            var responseMessage = CreateResponseMessage <ResponseMessageText>();
            var path            = MediaApi.Get(appId, requestMessage.MediaId, $"{Server.AppDomainAppPath}App_Data/Audio/");
            var outPutPath      = $"{path.Substring(0, path.Length - 4)}.mp3";
            var success         = FFmpegUtil.Arm2Mp3Async(path, outPutPath).ConfigureAwait(false).GetAwaiter().GetResult();

            if (success)
            {
                var intelligentVoiceServer = new IntelligentVoiceServer();
                var text = intelligentVoiceServer.Voice2Text(outPutPath).ConfigureAwait(false).GetAwaiter().GetResult();
                responseMessage.Content = text;
                File.Delete(path);
                File.Delete(outPutPath);
            }
            else
            {
                File.Delete(path);
                responseMessage.Content = "转换失败";
            }
            return(responseMessage);
        }
Example #18
0
        public ActionResult Edit(DbQRInfo info)
        {
            DbQRInfo poco = TF.QR.Config.Helper.SingleById <DbQRInfo>(info.Id);

            if (poco.OpenID != base.Request.Cookies["openid"].Value)
            {
                return(base.Error("没有操作权限"));
            }
            string str = base.Request.Form["mediaid"];

            if (!string.IsNullOrEmpty(str))
            {
                string accessTokenOrAppId = AccessTokenContainer.TryGetAccessToken(TF.QR.Config.AppId, TF.QR.Config.AppSecret, false);
                string path = string.Concat(new object[] { "/upload/", DateTime.Now.Year, "/", DateTime.Now.Month.ToString("D2"), "/", DateTime.Now.Day.ToString("D2"), "/" });
                if (!Directory.Exists(base.Server.MapPath(path)))
                {
                    Directory.CreateDirectory(base.Server.MapPath(path));
                }
                Guid       guid   = Guid.NewGuid();
                string     str4   = path + guid + ".jpg";
                FileStream stream = new FileStream(base.Server.MapPath(str4), FileMode.Create);
                MediaApi.Get(accessTokenOrAppId, str, stream);
                stream.Close();
                poco.Photo = str4;
            }
            poco.RealName       = info.RealName;
            poco.Sex            = info.Sex;
            poco.BirthDay       = info.BirthDay;
            poco.Address        = info.Address;
            poco.ContactName    = info.ContactName;
            poco.ContactMobile  = info.ContactMobile;
            poco.ContactName2   = info.ContactName2;
            poco.ContactMobile2 = info.ContactMobile2;
            poco.Tip            = info.Tip;
            TF.QR.Config.Helper.Save(poco);
            return(base.Success("提交成功"));
        }
 /// <summary>
 /// 下载微信临时素材Image
 /// </summary>
 /// <param name="serverId"></param>
 /// <param name="fileName"></param>
 /// <param name="getNewToken"></param>
 /// <returns></returns>
 public bool DownloadTemplate(string serverId, string fileName, bool getNewToken = false)
 {
     using (MemoryStream ms = new MemoryStream())
     {
         var senparcWeixinSetting = SenparcDI.GetService <IOptions <SenparcWeixinSetting> >().Value;
         MediaApi.Get(senparcWeixinSetting.WeixinAppId, serverId, ms);
         //保存到文件
         ms.Position = 0;
         byte[] buffer    = new byte[1024];
         int    bytesRead = 0;
         //判断是否上传成功
         byte[] topBuffer = new byte[1];
         ms.Read(topBuffer, 0, 1);
         if (topBuffer[0] == '{')
         {
             //写入日志
             ms.Position = 0;
             byte[] logBuffer = new byte[1024];
             ms.Read(logBuffer, 0, logBuffer.Length);
             string str = System.Text.Encoding.Default.GetString(logBuffer);
             Senparc.Ncf.Log.LogUtility.Weixin.InfoFormat("下载失败:{0}。serverId:{1}", str, serverId);
             return(false);
         }
         ms.Position = 0;
         //创建目录
         using (FileStream fs = new FileStream(fileName, FileMode.Create))
         {
             while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) != 0)
             {
                 fs.Write(buffer, 0, bytesRead);
             }
             fs.Flush();
         }
         Senparc.Ncf.Log.LogUtility.Weixin.InfoFormat("下载成功:Path[{0}]", fileName);
     }
     return(true);
 }
#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释
        public void GetAttach(string mediaId, Stream stream)
#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释
        {
            MediaApi.Get(TryGetAccessToken(), mediaId, stream);
        }
Example #21
0
 public static void Get(Stream stream, string mediaId)
 {
     MediaApi.Get(GetToken(), mediaId, stream);
 }
Example #22
0
 /// <summary>
 /// 获取文件流
 /// </summary>
 /// <param name="accessToken"></param>
 /// <param name="mediaId"></param>
 /// <returns></returns>
 public static void Get(string accessToken, string mediaId, Stream ms)
 {
     MediaApi.Get(accessToken, mediaId, ms);
 }
Example #23
0
        /// <summary>
        /// 新增语音数据
        /// </summary>
        /// <param name="context"></param>
        protected void SaveCurInfo()
        {
            var mediald = _ct.Request.Params["serverId"];
            var wxopid  = _ct.Request.Params["tmpid"];

            using (MemoryStream ms = new MemoryStream())
            {
                MediaApi.Get(AccessTokenContainer.TryGetToken(WebConfigurationManager.AppSettings["wxappid"], WebConfigurationManager.AppSettings["wxsecret"]), mediald, ms);
                //保存到文件
                var ditick     = DateTime.Now.Ticks;
                var targetname = string.Format("mp3_{0}.mp3", ditick);
                var fileName   = string.Format(WebConfigurationManager.AppSettings["mp3url"] + "mp3_{0}.amr", ditick);
                var targetpaht = string.Format(WebConfigurationManager.AppSettings["mp3url"] + "mp3_{0}.mp3", ditick);
                try
                {
                    using (FileStream fs = new FileStream(fileName, FileMode.Create))
                    {
                        ms.Position = 0;
                        byte[] buffer    = new byte[1024];
                        int    bytesRead = 0;
                        while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) != 0)
                        {
                            fs.Write(buffer, 0, bytesRead);
                        }
                        fs.Flush();
                    }
                    ExcuteProcess(WebConfigurationManager.AppSettings["ffexepath"], fileName, targetpaht, (s, e) => Console.WriteLine(e.Data));
                    if (File.Exists(fileName))
                    {
                        File.Delete(fileName);
                    }
                    using (WXDBEntities db = new WXDBEntities())
                    {
                        var tmodel = db.lotterUserInfo.Where(s => s.Type.Equals(14) && s.OpenId.Equals(wxopid)).FirstOrDefault();
                        if (tmodel != null)
                        {
                            tmodel.lotDesc = targetname;
                            db.SaveChanges();
                            string jsonstrlist = JsonHelper.GetJsonString(new jsonResult {
                                code = "succ", result = tmodel.Id + "", count = 1
                            });
                            _ct.Response.Write(jsonstrlist);
                        }
                        else
                        {
                            string jsonstrlist = JsonHelper.GetJsonString(new jsonResult {
                                code = "faile", result = "暂无数据", count = 2
                            });
                            _ct.Response.Write(jsonstrlist);
                        }
                    }
                }
                catch (Exception e)
                {
                    string jsonstrlist = JsonHelper.GetJsonString(new jsonResult {
                        code = "faile", result = e.Message, count = 0
                    });
                    _ct.Response.Write(jsonstrlist);
                }
            }
        }
Example #24
0
        public static Dictionary <string, string> WXUploadFile(string ServerID, UploadImageInfo model)
        {
            //string gps= map_tx2bd(double.Parse(model.GPSLatitude), double.Parse(model.GPSLongitude));

            string filePath    = System.Configuration.ConfigurationManager.AppSettings[BaseDictType.TempFileUploadPath];
            var    filename    = Util.RPCNow.Ticks.ToString() + Util.RPCNow.Millisecond + ".jpg";
            var    saveURl     = System.Web.HttpContext.Current.Server.MapPath(filePath) + filename;
            var    accessToken = WeixinCache.GetCorpAccessToken();

            using (MemoryStream stream = new MemoryStream())
            {
                MediaApi.Get(accessToken, ServerID, stream);

                if (!System.IO.Directory.Exists(saveURl))
                {
                    System.IO.Directory.CreateDirectory(saveURl.Replace(filename, ""));
                }
                using (var fs = new FileStream(saveURl, FileMode.CreateNew))
                {
                    stream.Seek(0, SeekOrigin.Begin);
                    stream.CopyTo(fs);
                    fs.Flush();
                }
            }

            Dictionary <string, string> data = new Dictionary <string, string>();

            MemoryStream ms = new System.IO.MemoryStream(System.IO.File.ReadAllBytes(saveURl));

            try
            {
                string strDescription = model.DateTimeOriginal + "\r\n";
                strDescription += model.StoreAddr + "\r\n";                 // + " 精度(" + model.SignPoint + ")" ;
                strDescription += model.StoreCode + " " + model.StoreName + "\r\n";
                strDescription += model.EmpCode + " " + model.EmpName + "(" + model.EmpDuty + ")\r\n";

                System.Drawing.Image image = System.Drawing.Image.FromStream(ms);
                Graphics             g     = Graphics.FromImage(image);
                //Brush drawBrush = new SolidBrush(System.Drawing.Color.FromArgb(((System.Byte)(222)), ((System.Byte)(243)), ((System.Byte)(255)))); //自定义字体颜色
                Font       font    = new Font("宋体", 10);
                SizeF      sizeF   = g.MeasureString(" " + strDescription + " ", font);
                Color      Mycolor = System.Drawing.Color.FromArgb(0, 0, 0, 0);           //说明:1-(128/255)=1-0.5=0.5 透明度为0.5,即50%
                SolidBrush sb1     = new System.Drawing.SolidBrush(Mycolor);
                g.FillRectangle(sb1, new RectangleF(new PointF(0, image.Height - 100), sizeF));
                //FillRoundRectangle(g, sb1, new Rectangle(15, 20, (int)sizeF.Width+20, (int)sizeF.Height), 8);
                //DrawRoundRectangle(g, Pens.Transparent, new Rectangle(15, 20, (int)sizeF.Width +20, (int)sizeF.Height), 8);
                g.DrawString(strDescription, new Font("宋体", 10), Brushes.White, new PointF(2, image.Height - 94));

                System.IO.File.Delete(saveURl);
                image.Save(saveURl);

                var url = filePath + filename;

                data.Add("status", "1");
                data.Add("content", "上传成功");
                data.Add("url", url);
                data.Add("filename", filename);
            }
            catch (Exception ex)
            {
                data.Add("status", "0");
                data.Add("content", "上传失败");
                data.Add("url", "");
                data.Add("filename", "");
            }
            finally
            {
                ms.Close();
            }

            //string returnstring=PostApply(hpf, DateTimeOriginal, GPSLatitude, GPSLongitude);


            return(data);
        }