我有两个不同的URL,我想检查带有这些URL的图像在java脚本中是相同还是不同。我正在检查确切的图像。例如,这两个是网址的
图像路径
url1="https://usercontent.googleapis.com/freebase/v1/image/m/030z4z"
url2="https://usercontent.googleapis.com/freebase/v1/image/m/09jjsg"
您可以将图像转换为 base64 字符串,然后比较字符串。
尝试这样的事情:
/**
* Convert an image
* to a base64 string
* @param {String} url
* @param {Function} callback
* @param {String} [outputFormat=image/png]
*/
function convertImgToBase64(url, callback, outputFormat){
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'),
img = new Image;
img.crossOrigin = 'Anonymous';
img.onload = function(){
var dataURL;
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img, 0, 0);
dataURL = canvas.toDataURL(outputFormat);
callback.call(this, dataURL);
canvas = null;
};
img.src = url;
}
var img1 = "http://image_url_1",
img2 = "http://image_url_2"
convertImgToBase64(img1, function(base64Img1){
convertImgToBase64(img2, function(base64Img2){
alert(base64Img1 == base64Img2);
});
});
首先,使用 比较图像大小
var img=document.getElementById("myImage"); //Which is an image element on DOM
img.naturalWidth 和 img.naturalHeight 用于两个图像。
如果图像大小完全相同,则向 DOM 添加两个与图像大小相同的画布,并使用以下方法绘制相应的图像;
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.drawImage(img,0,0);
然后使用与此类似的方法逐像素比较