Ich habe ein Canvas-Element CA
, wo ich einige ausgefallene Sachen aufzeichnen. Dann starte ich einen Filter über die ImageData IDA
von Canvas CA
und erstelle neue, modifizierte ImageData . Jetzt möchte ich, dass in eine Base64-Zeichenfolge ohne die Notwendigkeit eines zweiten Helfer-CanvasCB
konvertiert werden kann.Erstellen von Base64-Daten aus HTML-Canvas ImageData ohne Canvas Element
Alles, was ich zu diesem Thema gefunden habe, zeigt eine ganze Leinwand, die in eine DatenURL umgewandelt wird. Ist es möglich ohne CB? Wie?
var CA = document.getElementById("CA");
var ctx = CA.getContext("2d");
ctx.beginPath();
ctx.fillRect(100, 100, 100, 100);
ctx.stroke();
ctx.closePath();
var srcImg = ctx.getImageData(0, 0, CA.width, CA.height),
srcData = srcImg.data,
dstImg = ctx.createImageData(srcImg),
dstData = dstImg.data;
for (var i=0, maxI=srcData.length; i<maxI; i+=4) {
//invert
if (srcData[i+3] > 0) {
dstData[i] = dstData[i+1] = dstData[i+2] = 255;
dstData[i+3] = 0;
}
else {
dstData[i] = dstData[i+1] = dstData[i+2] = 0;
dstData[i+3] = 255;
}
}
//how to create base64 from dstImg??
//...
//just for visualization
document.getElementById("CB").getContext("2d").putImageData(dstImg, 0, 0);
canvas {
border : 1px solid;
}
<canvas id="CA" width="400" height="300"></canvas>
<!-- I'd like to avoid this helper canvas CB -->
<canvas id="CB" width="400" height="300"></canvas>
Sie das Original ''
@ guest271314: Hey, danke für deine Hilfe. Das funktioniert in der Tat gut. Ich benutze 'CA.cloneNode (false);' dafür. Wenn du eine Antwort erstellen könntest, akzeptiere ich sie :) – Fidel90