我希望能够制作一个小页面,用户可以在其中使用拖放将对象放置在场景上,然后将其画布保存为图像,或将图像发布到 facebook/pinterest。
我使用基于海滩上的动物示例的 KineticJS 库创建了拖放和 dataURI 功能,并与拖放保存图像功能合并。
我真正想做的是将画布图像放入同一(或新)页面上的图像持有者(例如,这里使用 Canvas2imageJS doc)。我已经能够使保存功能在新窗口中打开图像,并且还可以将 dataURI 的字符串作为文本框中的文本生成,如jsfiddle 上所示(或代码包括下面的空格持有人),其中单击保存按钮在新的(较小的)窗口中打开图像 (dataURI),并为 dataURI 生成字符串。
身体{边距:0px;填充:0px;} 画布 { 边框:1px 实心 #9C9898; } #buttons { 位置:绝对;左:10px;顶部:0px;} 按钮 { 边距顶部:10px; 显示:块;
} #imgArea{ border: 2px solid red; min-width: 576px; min-height:200px; display: block;} </style> <script src="http://www.html5canvastutorials.com/libraries/kinetic-v4.0.3.js"></script> <script> window.onload = function() { var stage = new Kinetic.Stage({ container: 'container', width: 578, height: 200 }); var layer = new Kinetic.Layer(); var rectX = stage.getWidth() / 2 - 50; var rectY = stage.getHeight() / 2 - 25; var box = new Kinetic.Rect({ x: rectX, y: rectY, width: 100, height: 50, fill: '#00D2FF', stroke: 'black', strokeWidth: 4, draggable: true }); box.on('mouseover', function() { document.body.style.cursor = 'pointer'; }); box.on('mouseout', function() { document.body.style.cursor = 'default'; }); layer.add(box); stage.add(layer); document.getElementById('save').addEventListener('click', function() { stage.toDataURL({ callback: function(dataUrl) { document.getElementById("textArea").value = dataUrl; window.open(dataUrl, "toDataURL() image", "width=600, height=200"); } }); }, false); }; </script> </head> <body> <div id="container"></div> <div id="buttons"> <button id="save"> Save as image </button> </div><div style=""> <textarea rows="10" cols="60" id="textArea"></textarea><br> Your picture will appear here: <img id="imgArea"/></div> </body> </html>
谁能帮我理解如何制作单击按钮的结果,以便生成的图像可以共享/发布到 facebook / pinterest 墙上?我正在进行的工作也在这里(拖放并仅在新窗口中生成 dataURI):www.shugar.com.au/obar/Default4.html