我有几层KineticJS画布,它们都是彼此叠加的。我希望能够将这些导出为PNG。我可以使用.toDataURL()
函数导出每个图层,但我希望它们都是一个图像。
有没有办法合并所有base64字符串?
答案 0 :(得分:3)
@apsillers有正确的想法 - 将每个图像组合在一起并导出最终的合成。
KineticJS有一个导出所有图层组合的快捷方式:stage.toDataURL().
stage.toDataURL
会将其所有图层的组合导出到dataUrl。
警告:与所有画布图像导出一样,您必须确保所有图像都符合CORS。
以下是示例代码:
var stage = new Kinetic.Stage({
container: 'container',
width: 400,
height: 400
});
var layer1 = new Kinetic.Layer();
stage.add(layer1);
var layer2 = new Kinetic.Layer();
stage.add(layer2);
var img1=new Image();
img1.onload = function() {
var image1 = new Kinetic.Image({
x: 0,
y: 0,
image: img1,
width: 100,
height: 100
});
layer1.add(image1);
layer1.draw();
}
img1.src="yourCORScompliantImage1.png";
var img2=new Image();
img2.onload = function() {
var image2 = new Kinetic.Image({
x: 0,
y: 0,
image: img2,
width: 100,
height: 100
});
layer2.add(image2);
layer2.draw();
}
img2.src="yourCORScompliantImage2.png";
$("#export").click(function(){
stage.toDataURL({
callback: function(dataUrl) {
window.open(dataUrl);
}
});
});
答案 1 :(得分:1)
你可以制作包含
的svg<image width="100" height="100" xlink:href="data:image1/png;base64,...">
<image width="100" height="100" xlink:href="data:image2/png;base64,...">
<image width="100" height="100" xlink:href="data:image3/png;base64,...">
<image width="100" height="100" xlink:href="data:image4/png;base64,...">
将是4层svg