html5 canvas在线生成图片后怎么样保存到数据库(服务器端)而不是本地?

html5 canvas在线生成图片后怎么样保存到数据库(服务器端)而不是本地?,第1张

canvas画布保存为图片

function convertCanvasToImage(canvas) {

  var image = new Image()

  image.src = canvas.toDataURL("image/png")

  return image

canvas参数为你的canvas对象,返回一个图片对象,你可以将这个image放到网页结构中,如果要保存图像,可以将canvas.toDataURL("image/png")返回的base64格式的图片数据放到input(type=hidden)中,用户点击上传按钮(或设置表单自动提交),将base64格式的数据上传

形如:

data:image/pngbase64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABbSURBVDhPY8AFMvJL/oMwlEs8yMgvJVcjyMbSYaERogCC0/OAGIkPwaVQMUhgQWiggWANIAzUhKoBpgjdMIhBUHsxAdxkUgHMBiiXeDAQNkICAsolHuC3kYEBAG/wdxC2W2tUAAAAAElFTkSuQmCC

服务器端接收到字符串(以上字符串可以直接在浏览器中打开,IE低版本就算了,能用canvas的浏览器都可以)后根据data:image/png得知应该保存的文件类型扩展名(png),然后将base64,后面的base64编码字符串解码(后端语言实现,如PHP用base64_decode()函数),将解码后的二进制数据以二进制的形式保存到服务器上(图片形式)

如果存数据库,可以直接存base64编码,读取时候解码也行,图片建议以文件形式存储,数据库不适合存大文件

不光绘制图片,在高分屏下,绘制文字和线条都会出现模糊的现象,GitHub上有一个hidpi-canvas-polyfill可以很好的解决这个问题,但是没有对图片进行处理。如果你了解了原因,解决这个问题也很容易。

首先,引入上方这个polyfill

然后,得到devicePixelRatio和backingStorePixelRatio的比例,可以使用下面的方法

var getPixelRatio = function(context) {

  var backingStore = context.backingStorePixelRatio ||

    context.webkitBackingStorePixelRatio ||

    context.mozBackingStorePixelRatio ||

    context.msBackingStorePixelRatio ||

    context.oBackingStorePixelRatio ||

    context.backingStorePixelRatio || 1

   return (window.devicePixelRatio || 1) / backingStore

}

//调用

var ratio = getPixelRatio(ctx)

之后,在调用ctx.drawImage()的时候,给width和height乘以ratio,如下:

ctx.drawImage(document.querySelector('img'), 10, 10, 300 * ratio, 90 * ratio)

制作名片简单的方法如下。

打开百度,点击上方【地图】。

点击地图下方【地图开放平台】。

点击【开发文档】。

选择【地图名片】。

点击【开始制作】。

按照提示第一步 *** 作填写基本信息。

提示第二步 *** 作,选择名片图片,生成名片链接。

HTML5是构建Web内容的一种语言描述方式。HTML5是互联网的下一代标准,是构建以及呈现互联网内容的一种语言方式.被认为是互联网的核心技术之一。HTML产生于1990年,1997年HTML4成为互联网标准,并广泛应用于互联网应用的开发。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6096337.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存