Skip to content

Instantly share code, notes, and snippets.

@jghorton14
Last active April 4, 2018 04:10
Show Gist options
  • Save jghorton14/77b4fa5ac7059893b5fb80aac8190a48 to your computer and use it in GitHub Desktop.
Save jghorton14/77b4fa5ac7059893b5fb80aac8190a48 to your computer and use it in GitHub Desktop.
Remove White Space in Image to create Transparency in JS
body {
background: lightblue;
}
#modified {
float: left !important;
}
<img src="" id="original" style="display:none;">
<canvas id="modified" style="display: none"></canvas>
/** I chose to delete white space from a logo */
function DisplayLogo() {
var logoUrl = "https://cdn.thingiverse.com/renders/2a/83/69/af/59/83c213b7acf3bd593b1211644dc9a07c_preview_featured.jpg";
// Converting URL to Base64 with the use of a proxy to get around the cross domain
var getDataUri = function (targetUrl, callback) {
var xhr = new XMLHttpRequest();
xhr.onload = function () {
var reader = new FileReader();
reader.onloadend = function () {
callback(reader.result);
};
reader.readAsDataURL(xhr.response);
};
var proxyUrl = 'https://cors-anywhere.herokuapp.com/';
xhr.open('GET', proxyUrl + targetUrl);
xhr.responseType = 'blob';
xhr.send();
};
// Returns Base 64 of image
getDataUri(logoUrl, function (base64) {
// console.log('RESULT:', base64);
//handling no Logo
if (base64 === "data:image/png;base64,Cg==") {
// console.log("Reached No Logo");
// Setting logo to not display
document.getElementById("modified").style.display = "none";
document.getElementById("original").style.display = "none";
// reducing padding if no logo
document.getElementById("CompanyName").style.paddingLeft = "0px";
}
//original
$("#original").attr("src", base64);
$("#original").on("load", function () {
var canvas = document.getElementById("modified"),
ctx = canvas.getContext("2d"),
image = document.getElementById("original");
// This size can change
canvas.height = canvas.width = 50;
// Updating modified id to display
document.getElementById("modified").style.display = "block";
ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, canvas.width, canvas.height);
var imgd = ctx.getImageData(0, 0, 1000, 1000),
pix = imgd.data,
newColor = {r: 0, g: 0, b: 0, a: 0};
for (var i = 0, n = pix.length; i < n; i += 4) {
var r = pix[i],
g = pix[i + 1],
b = pix[i + 2];
if (r >= 250 && g >= 250 && b >= 250) {
// Change the white to the new color.
pix[i] = newColor.r;
pix[i + 1] = newColor.g;
pix[i + 2] = newColor.b;
pix[i + 3] = newColor.a;
}
}
ctx.putImageData(imgd, 0, 0);
})
});
}
DisplayLogo();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment