Ich bin auf einem d3 Diagramm, das ein Bild einbetten, wie in diesem example:d3 Bild embeded angezeigt zweimal
var logoCanvas = d3.select("body").append("canvas")
.attr("id", "newCanvas")
.attr("width", width/2)
.attr("height", height/2)
.node();
var context = logoCanvas.getContext("2d");
var imageObj = new Image();
imageObj.src = 'myImage.svg';
imageObj.onload = function() {
context.drawImage(imageObj, 0, 0);
var imageData = document.getElementById("newCanvas").toDataURL("image/png")
//Add as SVG image element
d3.select("svg").
append("image")
.datum(imageData)
.attr("height", 100)
.attr("width", 100)
.attr('transform', 'translate(' + [offsetX - 50, offsetY - 50] + ')')
.attr("xlink:href", function(d) {
return d
})
}
Dies alles wie erwartet funktioniert, aber leider bekomme ich das Bild zwei Mal angezeigt. Im Grunde brauche ich nur die angehängte und nicht die, die auf den Kontext gezeichnet wird. Das Ding ist das Ich kann das angehängte nicht bekommen, ohne es zuerst zu zeichnen.
Gibt es eine Möglichkeit, das Bild, das im Kontext gezeichnet wird, zu verbergen?
Oder ein schlauer Ansatz, bei dem nur ein Bild angezeigt, aber eingebettet wird?
Können Sie versuchen, den Base64-Code des Bildes durch Lesen des Bildes mit [XMLHTTPRequest] (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) und [FileReader] (https://developer.mozilla.org/en-US/docs/Web/API/FileReader)? Wenn Sie nicht sicher sind, wie Sie das tun, fügen Sie bitte ein [Fidel] (https://jsfiddle.net/) mit dem Bild hinzu, ich werde Ihnen helfen. – Shashank
Wenn Sie den base64-Code haben, brauchen Sie keine Leinwand mehr. – Shashank