Skip to content

Instantly share code, notes, and snippets.

@goeko
Created March 4, 2024 23:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save goeko/4ca63cc464ce8ac4a7c62535f40ccef1 to your computer and use it in GitHub Desktop.
Save goeko/4ca63cc464ce8ac4a7c62535f40ccef1 to your computer and use it in GitHub Desktop.
makeNonTransparentAreasWhite | makeNonTransparentWhiteAreasTransparent | getFirstpixelesColorAndMakeNonTransparentAreasTransparent
function makeNonTransparentAreasWhite(imageElement) {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
canvas.width = imageElement.width;
canvas.height = imageElement.height;
ctx.drawImage(imageElement, 0, 0);
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
const data = imageData.data;
for (let i = 0; i < data.length; i += 4) {
if (data[i + 3] > 0) { // Wenn Alpha > 0, setze die Farbe auf Weiß
data[i] = 255; // Rot
data[i + 1] = 255; // Grün
data[i + 2] = 255; // Blau
}
}
ctx.putImageData(imageData, 0, 0);
return canvas.toDataURL();
}
function makeNonTransparentWhiteAreasTransparent(imageElement) {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
canvas.width = imageElement.width;
canvas.height = imageElement.height;
ctx.drawImage(imageElement, 0, 0);
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
const data = imageData.data;
for (let i = 0; i < data.length; i += 4) {
if (data[i] === 255 && data[i + 1] === 255 && data[i + 2] === 255) { // Wenn die Farbe Weiß ist
data[i + 3] = 0; // Setze Alpha auf 0, um es transparent zu machen
}
}
ctx.putImageData(imageData, 0, 0);
return canvas.toDataURL();
}
function getFirstpixelesColorAndMakeNonTransparentAreasTransparent(imageElement) {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
canvas.width = imageElement.width;
canvas.height = imageElement.height;
ctx.drawImage(imageElement, 0, 0);
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
const data = imageData.data;
const firstPixelColor = { r: data[0], g: data[1], b: data[2] };
for (let i = 0; i < data.length; i += 4) {
if (data[i] === firstPixelColor.r && data[i + 1] === firstPixelColor.g && data[i + 2] === firstPixelColor.b) {
data[i + 3] = 0; // Setze Alpha auf 0, um es transparent zu machen
}
}
ctx.putImageData(imageData, 0, 0);
return canvas.toDataURL();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment