千家信息网

.Net开发微信公众平台之处理图片的示例分析

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要为大家展示了".Net开发微信公众平台之处理图片的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下".Net开发微信公众平台之处理图片的示
千家信息网最后更新 2025年11月07日.Net开发微信公众平台之处理图片的示例分析

这篇文章主要为大家展示了".Net开发微信公众平台之处理图片的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下".Net开发微信公众平台之处理图片的示例分析"这篇文章吧。

举个例子,有人对着我们的公共微信号拍个照片发送过来,然后我们处理这个照片,比如进行ocr识别字(随后就会降到这个例子),或者人脸识别,或者拍照取证等,这些功能都是相当有用的。那么我们现在就要分析一下这个过程。微信平台肯定不能帮助我们OCR或者人脸识别等功能,要做这些功能首先到得到图片!用户拍摄的照片首先被上传到了wenxin的服务器,然后就有了一个mediaID,我们用这个mediaID可以下载到我们自己的服务器上然后处理,把结果给微信平台,由微信平台最终反馈给用户(关注者)。微信的开发文档已经给出了下载资源的办法,我改造为.net的,如下:

///   /// 下载保存多媒体文件,返回多媒体保存路径  ///   ///   ///   ///   public string GetMultimedia(string ACCESS_TOKEN, string MEDIA_ID)  {    string file = string.Empty;    string content = string.Empty;    string strpath = string.Empty;    string savepath = string.Empty;    string stUrl = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=" + ACCESS_TOKEN + "&media_id=" + MEDIA_ID;    HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(stUrl);    req.Method = "GET";    using (WebResponse wr = req.GetResponse())    {      HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse();      strpath = myResponse.ResponseUri.ToString();      WriteLog("接收类别://" + myResponse.ContentType);      WebClient mywebclient = new WebClient();      savepath = Server.MapPath("image") + "\\" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next().ToString().Substring(0, 4) + ".jpg";      WriteLog("路径://" + savepath);      try      {        mywebclient.DownloadFile(strpath, savepath);        file = savepath;      }      catch (Exception ex)      {        savepath = ex.ToString();      }    }    return file;  }

上面的两个参数很好理解,第一就是ACCESS_TOKEN,之前说过很多了,第二就是在微信服务器上的资源id,即mediaID。如果我们要下载微信服务器上的资源总要知道id吧。但是MEDIA_ID又是怎么产生的呢?我首先改造一下之前的消息实体类,加入MediaId 属性

 class wxmessage   {     public string FromUserName { get; set; }     public string ToUserName { get; set; }     public string MsgType { get; set; }     public string EventName { get; set; }     public string Content { get; set; }    public string Recognition { get; set; }    public string MediaId { get; set; }    public string EventKey { get; set; }   }

然后改造一下GetWxMessage(),给MediaId赋值。

private wxmessage GetWxMessage()   {     wxmessage wx = new wxmessage();     StreamReader str = new StreamReader(Request.InputStream, System.Text.Encoding.UTF8);     XmlDocument xml = new XmlDocument();     xml.Load(str);     wx.ToUserName = xml.SelectSingleNode("xml").SelectSingleNode("ToUserName").InnerText;     wx.FromUserName = xml.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText;     wx.MsgType = xml.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText;     if (wx.MsgType.Trim() == "text")     {       wx.Content = xml.SelectSingleNode("xml").SelectSingleNode("Content").InnerText;     }     if (wx.MsgType.Trim() == "event")     {       wx.EventName = xml.SelectSingleNode("xml").SelectSingleNode("Event").InnerText;       wx.EventKey = xml.SelectSingleNode("xml").SelectSingleNode("EventKey").InnerText;     }     if (wx.MsgType.Trim() == "voice")     {       wx.Recognition = xml.SelectSingleNode("xml").SelectSingleNode("Recognition").InnerText;     }    if (wx.MsgType.Trim() == "image")    {      wx.MediaId = xml.SelectSingleNode("xml").SelectSingleNode("MediaId").InnerText;    }          return wx;   }

如果我们在修改一下消息接受的代码,就可以做到,客户发一个照片给微信平台,程序检测到时图片,然后根据MediaId,调用GetMultimedia方法把图片下载到自己的服务器上。后面的工作嘛,你就想干什么干什么了。
刚才的例子好像是用户(关注者),发图片,然后通过微信平台到我们的服务器中,还有一种情况,用户发一个用户名:例如"hemeng",然后我需要调用已经存在服务器中的hemeng头像的图片反馈给用户,这怎么办呢?如何把我们的图片传给微信平台,然后传给用户呢?我们就用到了上传得方法:

///   /// 上传多媒体文件,返回 MediaId  ///   ///   ///   ///   public string UploadMultimedia(string ACCESS_TOKEN, string Type)  {    string result = "";    string wxurl = "https://cache.yisu.com/upload/information/20201208/260/11377.jpg";(本地服务器的地址)    WriteLog("上传路径:" + filepath);    WebClient myWebClient = new WebClient();    myWebClient.Credentials = CredentialCache.DefaultCredentials;    try    {      byte[] responseArray = myWebClient.UploadFile(wxurl, "POST", filepath);      result = System.Text.Encoding.Default.GetString(responseArray, 0, responseArray.Length);      WriteLog("上传result:" + result);      UploadMM _mode = JsonHelper.ParseFromJson(result);      result = _mode.media_id;    }    catch (Exception ex)    {      result = "Error:" + ex.Message;    }    WriteLog("上传MediaId:" + result);    return result;  }

第二个参数如果是图片"image",可以参照微信的文档。函数的返回值就是一个MediaId,这样你就可以利用发送图片的函数,发给客户了,发送图片的函数如下:

protected string sendPicTextMessage(Msg _mode, string MediaId)  {    string res = string.Format(@"                                                                  {2}                                                                                                           ",      _mode.FromUserName, _mode.ToUserName, DateTime.Now, MediaId);    return res;  }

以上是".Net开发微信公众平台之处理图片的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

图片 平台 服务器 服务 用户 处理 分析 照片 公众 示例 发微 例子 内容 函数 功能 多媒体 就是 篇文章 资源 路径 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 全国青年学子网络安全活动 北京很久互联网科技公司靠谱吗 sql数据库没有编辑器 青岛联想服务器总代理公司 神通数据库应用命令行 打印机突然连接不上服务器 小型数据库应用管理系统 易语言读取数据库多好慢 水溶性防护服务器油 软件开发中的各个活动 linux企业服务器的构建 浪潮服务器自动加电 不属于数据库的常用保护方法 服务器实时检测是否有图片上传 网络安全知识宣传视频如何制作 java 数据库字符集问题 公司服务器管理外包 武清区网络技术售后服务 计算机网络技术文理科 公司软件开发费怎么做分录 图片服务器解决方案 中燃公司有软件开发岗位吗 农村小学网络安全教育 网络技术教学反思存在问题 上海汽车软件开发工资待遇 日照市启动网络安全宣传周 无限传感网络技术有什么特点 合肥英飞网络技术有限公司 互联网教育软件开发公司 做ios游戏软件开发
0