關鍵詞:更新題庫到ES, php圖片轉base64位碼,調漢王圖像識別接口, 調搜索引擎接口,刪除collection
一、更新題庫到ES(四)
1.1 php圖片轉base64位碼
實現了,代碼如下:
1)先搞一個php,上傳文件用的,如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>New Document </title>
<metaname="Generator" content="EditPlus">
<metaname="Author" content="">
<metaname="Keywords" content="">
<metaname="Description" content="">
<meta charset="utf-8">
</head>
<body>
<form method="post"enctype="multipart/form-data"
action="2.2php_photo_base64.php">
<inputtype="file" name="imgfile"value=''>
<inputvalue='提交' type="submit">
</form>
</body>
</html>
注:注意三點,一是utf-8編碼;二是提交到一個php(2.2php_photo_base64.php),三是提交時要給上傳文件一個文字,方便接收。效果如下:
2)2.2php_photo_base64.php如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<metacharset="utf-8">
</head>
<body>
<?php
$img = $_FILES['imgfile']['tmp_name'];
$base64_img = base64EncodeImage($img);
echo '這是個圖像:<br>';
echo '<img src="' . $base64_img .'" style="width:500px;height:500px;" />'.'<br>';
function base64EncodeImage ($image_file) {
$base64_image = '';
$image_info = getimagesize($image_file);
$image_data = fread(fopen($image_file, 'r'), filesize($image_file));
$base64_image = 'data:' . $image_info['mime'] . ';base64,' .
chunk_split(base64_encode($image_data));
return $base64_image;
}
?>
</body>
</html>
注:注意三點:一是要用uft-8編碼,二是接收時,要用一樣的文件名(imgfile),三是輸出時可以以圖像輸出。還有一個注意點是要獲取臨時文件名(tmp_name),這樣輸出的是一個臨時路徑名,就不用把圖片和程序放在一個文件夾裏了。效果如下:
1.2調漢王圖像識別接口
//2調漢王的接口識別圖像,返回識別字符串-------------------------------------------------------2
// 參數:
// string key – 識別授權碼(請詢問漢王)
// string base64img – base64 格式的圖像數據。注意HTTP 調用時 base64字符串要符合Url編碼規範
// int option – 調用選項(=0 純文本;=1 文本公式混合;=2 公式區域同時提供文本和公式結果)
// bool combine – 是否合併識別結果爲一個字符串(true;false)
$params=array("key"=>"HanvonTestDianzhiJiaoyu","base64img"=>$base64_img,"option"=>"1","combine"=>"true");
$url ='http://114.215.125.18:8070/HanvonFormula.asmx/QuestionRecoJson';
$code = json_decode(curlRequest($url,$params),true)['result'];
echo $code."<br><br>";
echo "<pre>";
function curlRequest( $url, $params=array(), $header=array() ){
$ch = curl_init();
$res= curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
if( isset($_SERVER['HTTP_USER_AGENT']) ){
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
}
if( $params ){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
}
if( $header ){
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
$result = curl_exec ($ch);
curl_close($ch);
if ($result == NULL) {
return false;
}
return $result;
}
注:把上述獲取的圖片base64位碼,傳到圖像識別接口裏。需要傳四個參數,一是key,二是base64位碼,三是識別option,四是combine是否合併結果。
1.3調搜索引擎接口,搜題庫的題
//3調搜索引擎接口---------------------------------------------3
$url ='http://192.168.1.14:8004/v1/elasticsearch/search/searchs';
$params = array('type'=>1,'keyword'=>$code);
print_r(curlRequest($url,$params));
注:需要傳兩個參數,一是搜索類型,是搜索題還是試卷;二是傳入識別的關鍵字,用於題目搜索。
1.4 嘗試搜索兩個關鍵字
1)小知識------刪除mongo數據庫中的表(collection),用如下命令:
db.Problem_temp.drop();
2017年3月25日星期六