Picture analyzer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

303 lines
9.6 KiB

$(function() {
var $target = $("#drop-zone");
function dropZone($target, onDrop) {
$target
.bind("dragover", function() {
$target.addClass("drag-over");
return false;
})
.bind("dragend", function() {
$target.removeClass("drag-over");
return false;
})
.bind("dragleave", function() {
$target.removeClass("drag-over");
return false;
})
.bind("drop", function(event) {
var file = event.originalEvent.dataTransfer.files[0];
event.stopPropagation();
event.preventDefault();
$target.removeClass("drag-over");
var droppedImage = new Image();
var fileReader = new FileReader();
fileReader.onload = function(event) {
droppedImage.src = event.target.result;
$target.html(droppedImage);
};
fileReader.readAsDataURL(file);
onDrop(file);
});
}
dropZone($target, function(file) {
resemble(file).onComplete(function(data) {
$("#image-data").show();
$("#red").css("width", data.red + "%");
$("#green").css("width", data.green + "%");
$("#blue").css("width", data.blue + "%");
$("#alpha").css("width", data.alpha + "%");
$("#brightness").css("width", data.brightness + "%");
$("#white").css("width", data.white + "%");
$("#black").css("width", data.black + "%");
});
});
function onComplete(data) {
var time = Date.now();
var diffImage = new Image();
diffImage.src = data.getImageDataUrl();
$("#image-diff").html(diffImage);
$(diffImage).click(function() {
var w = window.open("about:blank", "_blank");
var html = w.document.documentElement;
var body = w.document.body;
html.style.margin = 0;
html.style.padding = 0;
body.style.margin = 0;
body.style.padding = 0;
var img = w.document.createElement("img");
img.src = diffImage.src;
img.alt = "image diff";
img.style.maxWidth = "100%";
img.addEventListener("click", function() {
this.style.maxWidth =
this.style.maxWidth === "100%" ? "" : "100%";
});
body.appendChild(img);
});
$(".buttons").show();
if (data.misMatchPercentage == 0) {
$("#thesame").show();
$("#diff-results").hide();
} else {
$("#mismatch").text(data.misMatchPercentage);
if (!data.isSameDimensions) {
$("#differentdimensions").show();
} else {
$("#differentdimensions").hide();
}
$("#diff-results").show();
$("#thesame").hide();
}
}
var file1;
var file2;
var resembleControl;
dropZone($("#dropzone1"), function(file) {
file1 = file;
if (file2) {
resembleControl = resemble(file)
.compareTo(file2)
.onComplete(onComplete);
}
});
dropZone($("#dropzone2"), function(file) {
file2 = file;
if (file1) {
resembleControl = resemble(file)
.compareTo(file1)
.onComplete(onComplete);
}
});
var buttons = $(".buttons button");
buttons.click(function() {
var $this = $(this);
$this
.parent(".buttons")
.find("button")
.removeClass("active");
$this.addClass("active");
if ($this.is("#raw")) {
resembleControl.ignoreNothing();
} else if ($this.is("#less")) {
resembleControl.ignoreLess();
}
if ($this.is("#colors")) {
resembleControl.ignoreColors();
} else if ($this.is("#antialising")) {
resembleControl.ignoreAntialiasing();
} else if ($this.is("#alpha")) {
resembleControl.ignoreAlpha();
} else if ($this.is("#same-size")) {
resembleControl.scaleToSameSize();
} else if ($this.is("#original-size")) {
resembleControl.useOriginalSize();
} else if ($this.is("#pink")) {
resembleControl
.outputSettings({
errorColor: {
red: 255,
green: 0,
blue: 255
}
})
.repaint();
} else if ($this.is("#yellow")) {
resembleControl
.outputSettings({
errorColor: {
red: 255,
green: 255,
blue: 0
}
})
.repaint();
} else if ($this.is("#flat")) {
resembleControl
.outputSettings({
errorType: "flat"
})
.repaint();
} else if ($this.is("#movement")) {
resembleControl
.outputSettings({
errorType: "movement"
})
.repaint();
} else if ($this.is("#flatDifferenceIntensity")) {
resembleControl
.outputSettings({
errorType: "flatDifferenceIntensity"
})
.repaint();
} else if ($this.is("#movementDifferenceIntensity")) {
resembleControl
.outputSettings({
errorType: "movementDifferenceIntensity"
})
.repaint();
} else if ($this.is("#diffOnly")) {
resembleControl
.outputSettings({
errorType: "diffOnly"
})
.repaint();
} else if ($this.is("#opaque")) {
resembleControl
.outputSettings({
transparency: 1
})
.repaint();
} else if ($this.is("#transparent")) {
resembleControl
.outputSettings({
transparency: 0.3
})
.repaint();
} else if ($this.is("#boundingBox")) {
resembleControl
.outputSettings({
boundingBox: {
left: $("#bounding-box-x1").val(),
top: $("#bounding-box-y1").val(),
right: $("#bounding-box-x2").val(),
bottom: $("#bounding-box-y2").val()
}
})
.repaint();
$this.removeClass("active");
}
if ($this.is("#ignoredBox")) {
resembleControl
.outputSettings({
ignoredBox: {
left: $("#ignored-box-x1").val(),
top: $("#ignored-box-y1").val(),
right: $("#ignored-box-x2").val(),
bottom: $("#ignored-box-y2").val()
}
})
.repaint();
$this.removeClass("active");
}
});
(function() {
var xhr = new XMLHttpRequest();
var xhr2 = new XMLHttpRequest();
var xhr3 = new XMLHttpRequest();
var done = $.Deferred();
var dtwo = $.Deferred();
var dthree = $.Deferred();
xhr.open("GET", "demoassets/People.jpg", true);
xhr.responseType = "blob";
xhr.onload = function(e) {
done.resolve(this.response);
};
xhr.send();
xhr2.open("GET", "demoassets/People2.jpg", true);
xhr2.responseType = "blob";
xhr2.onload = function(e) {
dtwo.resolve(this.response);
};
xhr2.send();
xhr3.open("GET", "demoassets/PeopleAlpha.png", true);
xhr3.responseType = "blob";
xhr3.onload = function(e) {
dthree.resolve(this.response);
};
xhr3.send();
$("#example-images").click(function() {
$("#dropzone1").html('<img src="demoassets/People.jpg"/>');
$("#dropzone2").html('<img src="demoassets/People2.jpg"/>');
$.when(done, dtwo).done(function(file, file1) {
if (typeof FileReader === "undefined") {
resembleControl = resemble("demoassets/People.jpg")
.compareTo("demoassets/People2.jpg")
.onComplete(onComplete);
} else {
resembleControl = resemble(file)
.compareTo(file1)
.onComplete(onComplete);
}
});
return false;
});
$("#example-images-alpha").click(function() {
$("#dropzone1").html('<img src="demoassets/People.jpg"/>');
$("#dropzone2").html('<img src="demoassets/PeopleAlpha.png"/>');
$.when(done, dthree).done(function(file, file1) {
if (typeof FileReader === "undefined") {
resembleControl = resemble("demoassets/People.jpg")
.compareTo("demoassets/PeopleAlpha.png")
.onComplete(onComplete);
} else {
resembleControl = resemble(file)
.compareTo(file1)
.onComplete(onComplete);
}
});
return false;
});
})();
});