微信公眾平臺訊息介面開發(24)圖片識別之人臉識別API
阿新 • • 發佈:2019-02-17
一、微信圖片獲取
首先要獲得使用者發過來的圖片,微信公眾平臺支援接收圖片,一條圖片訊息的格式如下:
<xml> <ToUserName><![CDATA[gh_13d1a3a7x46a]]></ToUserName> <FromUserName><![CDATA[oKaHDjt60aAyPvQmUX3ddyix_zG8]]></FromUserName> <CreateTime>1357543196</CreateTime> <MsgType><![CDATA[image]]></MsgType> <PicUrl><![CDATA[http://mmsns.qpic.cn/mmsns/L4qjYtOibummV7J7pbpWKZTiaRoeicicD151CGsQ5AW761Kmn5Hk83x5lQ/0]]></PicUrl> <MsgId>5830603629728080261</MsgId> </xml>
XML格式講解
ToUserName 訊息接收方微訊號,一般為公眾平臺賬號微訊號 FromUserName 訊息傳送方微訊號 CreateTime 訊息建立時間 MsgType 訊息型別;圖片訊息為image PicUrl 圖片連結地址 MsgId 訊息ID號
這裡PicUrl就是圖片URL
二、傳送圖片到介面
在微信介面中程式碼中獲取圖片方法如下:接收訊息型別中分離出圖片型別
public function responseMsg() { //get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; logger("R ".$postStr); //extract post data if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $RX_TYPE = trim($postObj->MsgType); switch ($RX_TYPE) { case "image": $resultStr = $this->receiveImage($postObj); break; } logger("T ".$resultStr); echo $resultStr; }else { echo ""; exit; } }
而識別介面的呼叫方法如下
http://api2.sinaapp.com/recognize/picture/?appkey=0020120430&appsecert=fa6095e123cd28fd&reqtype=text&keyword=http://www.doucube.com.img.800cdn.com/Public/Images/wangluodan.jpg
你可以直接提交微信圖片URL
http://api2.sinaapp.com/recognize/picture/?appkey=0020120430&appsecert=fa6095e123cd28fd&reqtype=text&keyword=http://mmsns.qpic.cn/mmsns/wFxOIHALicXicQnmicpXRRkp8URWC1QewPwgH2WdeHf8AYkaOUpdMUzYg/0
如果你喜歡整潔一點,可以使用http_build_query生成請求url,以下供參考
<?php
$doucube_params = array('apihost'=>"http://api2.sinaapp.com/",
'callmethod'=>"recognize/picture/?",
'appkey'=>$appkey,
'appsecert'=>$appsecert,
'reqtype'=>$reqtype,
'keyword'=>$picurl;
echo http_build_query($doucube_params);
?>
三、獲得識別結果
上面的程式執行後獲得的識別結果如下:預設為Unicode編碼
這是識別成功時的結果
{
"errcode": 0,
"msgtype": "text",
"text": {
"content": "察顏~觀色~面相~摸骨~ 嘿!有了:\n年齡:約17歲(碧玉年華)\n漂亮指數:68(天生麗質/:circle)"
}
}
這是失敗時的結果,傳送非照片格式檔案
{
"errcode": 1,
"msgtype": "text",
"text": {
"content": "八戒你也真調皮呀!我叫你不要亂扔東西,亂扔東西是不對的。"
}
}
四、程式中實現
傳送圖片並且獲得返回結果的函式如下:
private function receiveImage($object)
{
$apicallurl = urlencode("http://api2.sinaapp.com/recognize/picture/?appkey=0020120430&appsecert=fa6095e123cd28fd&reqtype=text&keyword=".$object->PicUrl);
$pictureJsonInfo = file_get_contents($apicallurl);
$pictureInfo = json_decode($pictureJsonInfo, true);
$contentStr = $pictureInfo['text']['content'];
$resultStr = $this->transmitText($object, $contentStr);
return $resultStr;
}
而transmitText就是封裝微信文字訊息的函式,與官方樣例中雷同
五、效果演示
這是要傳送的圖片
=============================================================
歡迎關注方倍工作室微信,瞭解我們及行業的最新動態