微信公眾平台消息接口開發(24)圖片識別之人臉識別API


微信公眾平台開發模式 微信 公眾平台 消息接口 開發模式 企業微信公眾平台 圖片識別 人臉識別 API
作者:方倍工作室  
原文:http://www.cnblogs.com/txw1958/archive/2013/03/13/weixin-if24-face-recognize-api.html

 

一、微信圖片獲取

首先要獲得用戶發過來的圖片,微信公眾平台支持接收圖片,一條圖片消息的格式如下:

<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://gb.cri.cn/mmsource/images/2010/10/27/20/10122511596322810460.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就是封裝微信文本消息的函數,與官方樣例中雷同


五、效果演示

這是要發送的圖片

 

 

 

六、最新動態

請參考《微信公眾平台開發最佳實踐》一書

地址  http://www.cnblogs.com/txw1958/p/buy-ebook.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM