仔细阅读这两个节点程序包的文档:
https://github.com/aheckmann/gm
https://github.com/rsms/node-imagemagick
试图找出是否有可能使用图像生成感知哈希。
我已经在我的项目中使用了这些软件包,因此很高兴找到哈希功能,而不是像Jimp那样添加额外的软件包。
任何帮助都将受到高度赞赏!
编辑1:
因此,在查看了你们的所有链接和建议之后,我尝试了以下方法
gm()
.command("convert")
.in("testImage.jpeg")
.in("-verbose")
.in("-moments")
.write( "testOutput.json", function (err) {
if (!err) {
console.log("DONE :)");
}
else {
console.log("ERROR :(");
console.log(err);
}
});
这给了我巨大的输出,但是我感兴趣的部分在这里:
"channelPerceptualHash": {
"colorspaces": [ "sRGB", "HCLp"],
"Channel0": {
"PH1": [0.514487, 11],
"PH2": [3.46339, 11],
"PH3": [4.96178, 11],
"PH4": [5.09255, 11],
"PH5": [10.2783, 11],
"PH6": [7.0728, 11],
"PH7": [10.2625, 11]
},
"Channel1": {
"PH1": [0.514487, 11],
"PH2": [3.46339, 11],
"PH3": [4.96178, 11],
"PH4": [5.09255, 11],
"PH5": [10.2783, 11],
"PH6": [7.0728, 11],
"PH7": [10.2625, 11]
},
"Channel2": {
"PH1": [0.514487, 0.514487],
"PH2": [3.46339, 3.46339],
"PH3": [4.96178, 4.96178],
"PH4": [5.09255, 5.09255],
"PH5": [10.2783, 10.2783],
"PH6": [7.0728, 7.0728],
"PH7": [10.2625, 10.2625]
}
},
"renderingIntent": "Perceptual"
根据该线程http://www.imagemagick.org/discourse-server/viewtopic.php?t=30258
如果我没记错的话,我可以对这些PH值进行比较,以确定图像是否相同。
答案 0 :(得分:2)
对从@ fmw42收到的宝贵建议的回答有所改善
AFAIK,您的2个链接中的第一个更相关,并且已3年未维护,所以我不抱希望。
在命令行中,它将是:
identify -verbose -moments image.png
因此,我下载了这些软件包的源,并像这样搜索moment
或hash
或perceptual
:
find . -type f -exec grep -Ei "moment|hash|perceptual" {} +
唯一的输出与感知哈希无关,仅与一般图像哈希和感知渲染意图无关:
./test/selectFrame.js: m.identify('%#', function (err, hash1) {
./test/selectFrame.js: m.selectFrame(2).identify('%#', function (err, hash2) {
./test/selectFrame.js: assert.ok(hash1.toString().trim() !== hash2.toString().trim())
./test/getterIdentify.js: assert.equal(d['Rendering intent'], 'Perceptual');
我不抱希望,但很高兴在遇到错误时得到纠正。