如何在javascript中比较两个不同的图像

时间:2015-01-02 11:49:05

标签: javascript image compare

我有两个不同的URL,我想检查这些URL中的图像在java脚本中是相同还是不同。我正在检查精确图像。 对于例如这两个是URL的

图片路径

url1="https://usercontent.googleapis.com/freebase/v1/image/m/030z4z"
url2="https://usercontent.googleapis.com/freebase/v1/image/m/09jjsg"

2 个答案:

答案 0 :(得分:5)

您可以将图像转换为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);
    });
});

答案 1 :(得分:1)

首先,使用

比较图像尺寸
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);

然后使用与this

类似的方法逐个像素地进行比较