在Node.js中消耗TinEye反向图像搜索API。
反向图像搜索最简单的解释就是用要搜索的图像作为查询参数,在网上搜索一个图像的出现。我们可以用这种搜索来定位一张图片的来源,寻找一张分辨率更好的图片,或者获取更多的图片信息。
在Node.js中使用TinEye的反向图像搜索API
例如,一个在线买家可能想通过反向搜索,使用卖家的资料图片或企业的标志来验证卖家的图片,并验证他/她的可信度。
反向图像搜索服务提供商的例子
- TinEye
- 谷歌图片
- Pixsy
在这篇文章中,我们将讨论TinEye反向图片搜索以及如何在Node.js中使用其API。它是一个RESTFUL API。
前提条件
要跟上这篇文章,具备以下条件将很有帮助。
- 对[Node.js]和[JavaScript]概念有基本了解。
- 在你的系统中安装Node.js(NPM)。
- 对REST API的了解。
开始使用
我们将首先安装一个TinEye库,tineye-api ,为Node.js制作,我们将在整个程序中使用它。
在你的终端运行以下命令。
npm install tineye-api
在沙盒中测试
TinEye提供了两个密钥,使我们能够在沙盒中测试。在沙盒中,我们将只搜索下面的图片,因为它是唯一允许用于测试的图片。

你可以在上线后搜索其他图片。
以下是密钥。
- 公钥:
LCkn,2K7osVwkX95K4Oy - 私钥:
6mm60lsCNIB,FwOWjJqA80QZHh9BMwc-ber4u=t^
我们将在我们的代码中使用它们。
初始化库
我们首先包含这个库,然后创建一个名为api 的变量来代表API,通过输入TinEye REST端点的URL和两个密钥来初始化它。
let TinEye = require('tineye-api')
let api = new TinEye('https://api.tineye.com/rest/', <public_key>, <private_key>);
从URL进行搜索
TinEye提供了使用图片的URL搜索图片的选项。
创建一个名为tineye.js的新文件并粘贴这段代码。
//importing the module
let TinEye = require('tineye-api')
//The public and private keys
let privateKey= '6mm60lsCNIB,FwOWjJqA80QZHh9BMwc-ber4u=t^'
let publicKey = 'LCkn,2K7osVwkX95K4Oy'
//Initializing the api
let api = new TinEye('https://api.tineye.com/rest/', publicKey, privateKey);
//The URL of the image to be searched
let url = "https://tineye.com/images/meloncat.jpg";
//An object containg options for the search
let options = {
limit: 5,
sort: "score",
order: "desc",
};
//using the API
/*feeding the URL and the options for the search
then logging the response and the error
*/
api
.searchUrl(url, options)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
我们首先导入库,然后创建两个变量,publicKey 和privateKey ,并用密钥初始化它们。然后我们初始化API和要搜索的图片的URL。
注意:使用的URL是meloncat图像,我们将在沙盒中用于测试。
在options 对象中,我们传递用于搜索的可选参数,这些参数是。
i. limit - 这个参数指定了要显示给用户的结果图片的数量。默认值是100,为了返回所有的图片,我们把它初始化为-1。
ii.sort- 分类标准,在我们的例子中,我们将根据查询的图片与返回的图片的准确度得分进行分类。
我们只能传入这些值。
- 分数
- 大小
- 抓取日期(crawl_date
iii.order - 用于指定如何使用排序标准返回结果,asc 表示升序,desc 表示降序。
最后,我们将URL和搜索的选项输入到API,然后记录响应和错误(如果有)。
运行该代码后,我们得到如下截图所示的输出。

返回的JSON响应包含一个对象stats ,显示搜索的统计数据,如时间和查询时间。
对我们来说,这个对象中最重要的是total_results ,它显示了返回的图片数量。total_stock ,它显示了库存图片的总数,而total_filtered_results ,顾名思义,是过滤后的结果。
在响应中,我们也有一个叫做results 的对象,其中包含一个叫做matches 的数组,其中包含匹配的图片。我们的对象有5张,因为在limit 选项中,我们设置了5张。
我们可以进一步挖掘results 对象,看到返回的图像细节。
将响应代码更新为这个,然后运行该文件。
console.log(response.results);
我们得到以下输出。

它详细显示了matches 数组中的对象,例如发现的域名反向链接,覆盖等。你可以使用这些信息来向终端用户显示图像。
使用文件图像进行搜索
人们也可以通过从本地机器或设备上传图片来进行搜索。程序是一样的,只是我们没有指定一个URL。
我们将图像路径输入到文件系统模块的readFileSync() 。
然后,我们使用searchData() 方法将图片和选项送入API。
同样,如果你在沙盒中测试它,你会遇到一个错误。你只能在直播时使用它。
var fs = require('fs');
var img = fs.readFileSync("path_to_the_image");
var params = {
offset: 0,
sort: "size",
order: "asc",
};
api
.searchData(img, params)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
上线
上线是一个简单明了的过程。你将注册,获得你的钥匙,然后进行测试搜索,你就可以开始了。
注意:要使用实时API,你必须先购买一个捆绑包。
进一步阅读
这只是一个基本的介绍,但API可以以各种方式进行操作。