【发布时间】:2015-05-29 04:11:19
【问题描述】:
这是我的问题:我在 javascript 中创建了一个图像拼贴功能。 (顺便说一句,我从这篇文章中的一些代码开始:dragging and resizing an image on html5 canvas)
我有 10 个画布元素堆叠在一起,每个画布的所有参数(包括 2dcontext、图像数据、位置等)都保存在函数“拼贴”的实例中。
这很好,我可以单独操作每个画布(拖动、调整大小、添加框架等)。但现在,我希望用户能够保存当前的工作。
所以我认为也许可以创建一个包含所有对象实例的 blob,然后将 blob 作为文件保存在磁盘上。
这是函数 collage(我还将每个实例推送到数组 collage.instances,以便能够有编号的索引)
function collage() {
this.canvas_board = '';
this.canvas = '';
this.ctx = '';
this.canvasOffset = '';
this.offsetX = '';
this.offsetY = '';
this.startX = '';
this.startY = '';
this.imageX = '';
this.imageY = '';
this.mouseX = '';
this.mouseY = '';
this.imageWidth = '';
this.imageHeight = '';
this.imageRight = '';
this.imageBottom = '';
this.imgframe = '';
this.frame = 'noframe';
this.img = '';
collage.instances.push(this);
}
collage.instances = [];
我尝试过这样的事情:
var oMyBlob = new Blob(collage.instances, {type: 'multipart/form-data'});
但这不起作用(仅包含大约 300 位数据)。
谁能帮忙?或者也许建议另一种方法来保存当前的拼贴作品。当然必须可以打开 blob 并重新填充对象实例。
或者也许我让这变得比它必须的复杂一点......但我现在被卡住了,所以我会很感激任何提示。
【问题讨论】:
-
您可以在每个画布上 getImageData() 并保存该数据,或者您可以在每个画布上使用 canvas.getDataURL() 在保存之前转换为压缩格式。
-
感谢您的回答。我正在尝试每个 toDataURL (也许这就是你的意思?)并使用 ajax 将数据发送到服务器端......虽然还没有。
-
是的,我的意思是
toDataURL(),我在下面的回答可以使用 ajax 以及保存本地文件。
标签: javascript html canvas