一、微信图片获取

首先要获得用户发过来的图片,微信公众平台支持接收图片,一条图片消息的格式如下:

 

1.<xml>
2.<ToUserName><![CDATA[gh_13d1a3a7x46a]]></ToUserName>
3.<FromUserName><![CDATA[oKaHDjt60aAyPvQmUX3ddyix_zG8]]></FromUserName>
4.<CreateTime>1357543196</CreateTime>
5.<MsgType><![CDATA[image]]></MsgType>
7.<MsgId>5830603629728080261</MsgId>
8.</xml>

XML格式讲解

ToUserName 消息接收方微信号,一般为公众平台账号微信号
FromUserName 消息发送方微信号
CreateTime 消息创建时间
MsgType 消息类型;图片消息为image
PicUrl 图片链接地址
MsgId 消息ID号

这里PicUrl就是图片URL

二、发送图片到接口

在微信接口中代码中获取图片方法如下:接收消息类型中分离出图片类型

 

01.public function responseMsg()
02.{
03.//get post data, May be due to the different environments
04.$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
05.logger("R ".$postStr);
06.//extract post data
07.if (!empty($postStr)){
08.$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
09.$RX_TYPE = trim($postObj->MsgType);
10. 
11.switch ($RX_TYPE)
12.{
13.case "image":
14.$resultStr = $this->receiveImage($postObj);
15.break;
16.}
17.logger("T ".$resultStr);
18.echo $resultStr;
19.}else {
20.echo "";
21.exit;
22.}
23.}

而识别接口的调用方法如下

 

你可以直接提交微信图片URL

 

如果你喜欢整洁一点,可以使用http_build_query生成请求url,以下供参考

 

01.<?php
02.$doucube_params array('apihost'=>"http://api2.sinaapp.com/",
03.'callmethod'=>"recognize/picture/?",
04.'appkey'=>$appkey,
05.'appsecert'=>$appsecert,
06.'reqtype'=>$reqtype,
07.'keyword'=>$picurl;
08. 
09.echo http_build_query($doucube_params);
10.?>

三、获得识别结果

上面的程序运行后获得的识别结果如下:默认为Unicode编码

这是识别成功时的结果

 

1.{
2."errcode": 0,
3."msgtype""text",
4."text": {
5."content""察颜~观色~面相~摸骨~ 嘿!有了:\n年龄:约17岁(碧玉年华)\n漂亮指数:68(天生丽质/:circle)"
6.}
7.}

这是失败时的结果,发送非照片格式文件

 

1.{
2."errcode": 1,
3."msgtype""text",
4."text": {
5."content""八戒你也真调皮呀!我叫你不要乱扔东西,乱扔东西是不对的。"
6.}
7.}

四、程序中实现

发送图片并且获得返回结果的函数如下:

 

01.private function receiveImage($object)
02.{
03.$apicallurl = urlencode("http://api2.sinaapp.com/recognize/picture/?appkey=0020120430&;appsecert=fa6095e123cd28fd&reqtype=text&keyword=".$object->PicUrl);
04.$pictureJsonInfo file_get_contents($apicallurl);
05.$pictureInfo = json_decode($pictureJsonInfo, true);
06.$contentStr $pictureInfo['text']['content'];
07.$resultStr $this->transmitText($object$contentStr);
08.return $resultStr;
09.}

而transmitText就是封装微信文本消息的函数,与官方样例中雷同

 

 

from:http://www.it165.net/pro/html/201306/6155.html

創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()