将 html5 Canvas 作为数据保存到 mysql 数据库

Posted

技术标签:

【中文标题】将 html5 Canvas 作为数据保存到 mysql 数据库【英文标题】:Saving html5 Canvas as Data to mysql Database 【发布时间】:2011-12-15 21:14:16 【问题描述】:

这可能是不可能的,这对我的情况来说真的很理想。我使用 html5 画布作为幻灯片演示器,用户可以在其上绘制并保存到本地机器上。

我的目标是以某种不同的方式将其保存到我们的数据库中。

我想要发生的事情:

画布加载幻灯片,然后用户可以在上面绘图。一旦他们点击保存,它将行的数据保存到我们数据库中的一个单元格中。当用户重新登录查看幻灯片时,它会显示带有注释的原始幻灯片,然后将其拉到上面。

使用这种方法,我不必为每个独特的人存储数千张图像,他们将能够擦除过去的注释而不擦除原始幻灯片。

这是我的上传代码:

画布:

<input type="button" id="savepngbtn" value="Save Slide">

<!-- Main Canvas / Main Slide -->
 <div id="main"><canvas id="drop1" class="drop" style=" background-repeat:no-repeat;"  ></canvas></div>

拉取原始图像:

var img = new Image();
img.src = 'pdf_images/pdf-save-0.png';
img.onload = function() 
    oCtx.drawImage(img, 0, 0)

我需要什么:

将创建的行作为数据保存到数据库的保存特性/功能 上传数据并将其显示在画布上的代码,就像之前创建的一样。

我不确定这是否可能,但伙计,这真的很好,可以挽救生命!谢谢!

【问题讨论】:

只需我的 2 美分,但除非您使用的数据库是专门为优化保存大型 blob 而设置的,否则我会远离在该数据库中保存图像数据...如果您使用的是 mysql那么你绝对不应该将它存储在那里,它会比将它保存到 HD 并存储文件名要慢得多。 【参考方案1】:

默认情况下,画布是透明的,因此您可以轻松地将其放在其他图像之上并在其上绘图。

使用canvas.toDataURL() 获取画布的base64 编码png。您可以将其保存到数据库中。您可以使用普通的后请求将数据发送到服务器。然后,您可以通过从您的数据库中检索数据并将其设置为 Image 元素的 src 并在画布 2d 上下文中使用 drawImage 将图像写回画布来恢复它。

或者您可以记录用户绘制的每一笔画并将其保存在数据库中。加载页面时,您只需重绘笔画即可。

【讨论】:

【参考方案2】:

虽然它旨在捕获签名,但我相信 Thomas J Bradley 的 Signature Pad 项目会提供一些有用的信息和代码示例,用于保存和重新生成捕获的绘图。

【讨论】:

以上是关于将 html5 Canvas 作为数据保存到 mysql 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何将 HTML5 画布保存为 png [重复]

使用 Java Servlet 保存 HTML5 <canvas> 图像

html5 如何将摄像头拍下的图片下载到本地

如何将 HTML5 <canvas> 保存为 ICO 图像(图标文件)或 .cur 文件(静态鼠标光标)而不是 JavaScript 中的 PNG?

html5必须要用到Canvas吗?

HTML5 画布 - 将保存的图像分享到社交媒体