PHP 百度图片搜索功能API接口开发
首先创建应用:
https://console.bce.baidu.com/ai/?_=&fromai=1#/ai/imagesearch/overview/index
会有2参数要用到:
然后申请建库
随便传几张图片到里面。
接口:ImageIdentification.php
<?php
/*** Created by PhpStorm.* User: Administrator* Date: 2021/4/12* Time: 15:07*/namespace app\common;/*** AI图片搜索* Class ImageIdentification* @package app\common*/
class ImageIdentification
{/*** @var string*/protected static $client_id;/*** @var string*/protected static $client_secret;/*** 构造函数* ImageIdentification constructor.*/protected static function construct(){self::$client_id = 'PM4vfxjGTZt8SQBg0YhAtNDb';self::$client_secret = 'secret';}/*** @param $path* @param string $name* @param int $id* @return string* @throws \ImagickException*/public static function addImageDent($path, $name = '杜小明', $id = 1){$path = self::reduceSize($path);$token = static::getToken();$url = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/add?access_token=' . $token;$img = file_get_contents($path);$img = base64_encode($img);$bodys = array('brief' => '{"name":"' . $name . '", "id":"' . $id . '"}','image' => $img,'tags' => "1,1");$res = self::request_posts_http($url, $bodys);$res = JD($res);unlink($path);return isset($res['cont_sign']) ? $res['cont_sign'] : 'error';}/*** 搜索* @param $path* @return array* @throws \ImagickException*/public static function searchImageDent($path){#搜索$path = self::reduceSize($path);$token = static::getToken();$url = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/search?access_token=' . $token;$img = file_get_contents($path);$img = base64_encode($img);$bodys = array('image' => $img,'pn' => 0,#从第0位开始搜'rn' => 1#搜索的长度,这里只搜索一张图片,可以设置多点);$res = self::request_posts_http($url, $bodys);$res = JD($res);$cont_sign = [];if ($res['result_num']) {foreach ($res['result'] as $re) {$cont_sign[] = $re['cont_sign'];}}return $cont_sign;}/*** @param $src_img* @return string* @throws \ImagickException*/protected static function reduceSize($src_img){$ai = new \Imagick($src_img);$ai->thumbnailImage(300, 300, true);#如果给定第三个参数true 的话则按最大边300处理$path = ROOT_PATH . str_shuffle(md5(time())) . '.jpg';$ai->writeImage($path);#$path = self::reduceQuality($path);return $path;}/*** @param $src_img* @param int $quality* @param string $dest_img* @return string* @throws \ImagickException*/protected static function reduceQuality($src_img, $quality = 70, $dest_img = ''){if (!$dest_img) {$dest_img = $src_img;}$imagick = new \Imagick();$imagick->readImage($src_img);$imagick->setImageCompression(\Imagick::COMPRESSION_JPEG);$imagick->setImageCompressionQuality($quality);$imagick->writeImage($dest_img);return $dest_img;}/*** @param string $url* @param string $param* @return bool|string*/protected static function request_posts_http($url = '', $param = ''){if (empty($url) || empty($param)) {return false;}$postUrl = $url;$curlPost = $param;// 初始化curl$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $postUrl);curl_setopt($curl, CURLOPT_HEADER, 0);// 要求结果为字符串且输出到屏幕上curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);// post提交方式curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);// 运行curl$data = curl_exec($curl);curl_close($curl);return $data;}/*** @param string $url* @param string $param* @return bool|string*/protected static function request_post($url = '', $param = ''){if (empty($url) || empty($param)) {return false;}$postUrl = $url;$curlPost = $param;$curl = curl_init();//初始化curlcurl_setopt($curl, CURLOPT_URL, $postUrl);//抓取指定网页curl_setopt($curl, CURLOPT_HEADER, 0);//设置headercurl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上curl_setopt($curl, CURLOPT_POST, 1);//post提交方式curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);$data = curl_exec($curl);//运行curlcurl_close($curl);return $data;}/*** @return string*/protected static function getToken(){self::construct();$url = 'https://aip.baidubce.com/oauth/2.0/token';$post_data['grant_type'] = 'client_credentials';$post_data['client_id'] = self::$client_id;$post_data['client_secret'] = self::$client_secret;$o = "";foreach ($post_data as $k => $v) {$o .= "$k=" . urlencode($v) . "&";}$post_data = substr($o, 0, -1);$res = self::request_post($url, $post_data);$res = JD($res);return isset($res['access_token']) ? $res['access_token'] : 'error';}}
调用方法:
ImageIdentification::searchImageDent($path)
PHP 百度图片搜索功能API接口开发相关推荐
- 淘宝/天猫/1688拍立淘API接口(以图搜商品API接口,图片搜索API接口,图片搜索商品API接口)代码对接教程
淘宝/天猫/1688拍立淘API接口(以图搜商品API接口,图片搜索API接口,图片搜索商品API接口)代码对接教程如下: 1.公共参数 名称 类型 必须 描述(接口代码教程wx19970108018 ...
- 百度搜索排名API接口PC返回JSON数据格式
百度搜索排名API接口返回JSON数据格式 写个笔记, 记录一下 https://www.baidu.com/s?wd=新信息&pn=50&rn=50&tn=json 参数说明 ...
- 寻找百度图片搜索接口--three
我是怎么破解他的objurl的呢,其实怎么破解是还是百度自己告诉我的...你想啊,他为啥能在开始我看到的那个js 中显示成正常的url地址呢?为什么url中的objurl 知识编码了一下 : / ...
- php 接口 2.0,YII 2.0 API接口开发
YII2.0 API接口开发 首先先安装 YII2.0 高级模板(安装请参考其他教程) 准备 添加数据库配置 common/config/main-local.php image 把backend目录 ...
- Android建立网络连接,利用JSON数据获取百度图片搜索结果及GSON的简单使用
1.建立网络连接的基本方式 Android中建立网络连接最主要的方式是利用HttpURLConnection,示例如下: public class HttpUtil {public static by ...
- 基于百度图片搜索的vscode插件——超级鼓励师
简介 超级鼓励师是一款vscode插件,基于百度图片搜索服务,根据用户设置的关键字获取图片.并通过webview展示给用户.缓解程序猿/媛工作压力,给予你爱的鼓励. vscode 插件市场搜索超级鼓励 ...
- 【商品详情 +关键词搜索】API 接口系列
首先,大家要到官方主页去申请一个 appkey,这个是做什么用的呢?App Key 是应用的唯一标识,TOP 通过 App Key 来鉴别应用的身份.AppSecret 是 TOP 给应用分配的密钥, ...
- YesApi-超强的API接口开发神器
YesApi 是一个免费.简单又好用的API低代码开发平台.定位:YesApi = API开发 + API测试 + API文档 + API调用 + API后端,让你用一个账号,就能轻松搞定API接口开 ...
- api接口加密_谈谈API接口开发中的安全性如何解决
如今各种API接口层出不穷,一个API的好与不好可以从很多方面来考量,其中"安全性"就是一个API接口最基本也是最重要的一个特点.本文就来跟大家聊聊关于API接口开发的安全性问题. ...
最新文章
- R语言构建文本分类模型:文本数据预处理、构建词袋模型(bag of words)、构建xgboost文本分类模型、xgboost模型预测推理并使用混淆矩阵评估模型、可视化模型预测的概率分布
- mybatis整合redis
- gitd mysql_MySQL GTID (一)
- php学籍信息管理系统心得_php实现学生管理系统
- Rust创建项目的两种方式
- NLP 自然语言分析理解
- vs2019,C#,MySQL创建图书管理系统3(管理员相关页面的布局和设计实现,图书显示,图书添加)
- Linux(Centos7) 报 “RTNETLINK answers: File exists” 问题的解决
- FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding个人理解
- uni-app学习路线与建议
- 简单易懂的CRC校验原理阐述
- 四川bh百汇云商城运营中
- 微信小程序——搭建自己的服务器
- Python: pathlib基础用法
- 金蝶cloud 常用数据库表
- table css个人简历的实现 美观 简洁
- 行业研究报告-全球与中国吊钩市场现状及未来发展趋势
- 【电子学会】2021年03月图形化四级 -- 十字回文诗
- 最新云海授权系统源码绿色版+UI非常好看
- 信号的模拟频率与数字频率的关系
热门文章
- error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such
- 阿里执行副主席蔡崇信投资NBA篮网队;工信部约谈运营商,不得限制用户资费选择丨价值早报
- 企业办理CMMI3级认证,需要做哪些工作?
- word使用计算机题,(word)计算机基础考试试题及答案.doc
- 从输入URL到网页呈现的过程
- android键盘广告,android键盘钢琴Lite郑永修改版+去广告
- SAP MM批次管理(2)批次主数据--大海
- 解决:RuntimeError: CUDA out of memory. Tried to allocate 64.00 MiB (GPU 0; 4.00 GiB total capacity; 2
- Kotlin协程在项目中的实际应用
- 阿里云盘内测申请_阿里云网盘强势来袭,内测资格速速申请