合并base64图像

时间:2013-10-23 13:02:09

标签: javascript canvas

我有几层KineticJS画布,它们都是彼此叠加的。我希望能够将这些导出为PNG。我可以使用.toDataURL()函数导出每个图层,但我希望它们都是一个图像。

有没有办法合并所有base64字符串?

2 个答案:

答案 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