前端开发您现在的位置是:首页 > 博客日志 > 前端开发

js将canvas生成图片并保存到本地

<a href='mailto:'>微wx笑</a>的头像微wx笑 2022-07-12前端开发 2 0关键字: js  canvas  

需求将 canvas 生成图片并保存到本地方案使用 Canvas 的 toDataURL() 方法HTMLCanvasElement.toDataURL() 方法返回一个包含图片展示的 data URI 。可以使用 type 参数其类

需求p3X无知

将 canvas 生成图片并保存到本地p3X无知


p3X无知

方案p3X无知

使用 Canvas 的 toDataURL() 方法p3X无知


p3X无知

HTMLCanvasElement.toDataURL() 方法返回一个包含图片展示的 data URI 。可以使用 type 参数其类型,默认为 PNG 格式。图片的分辨率为96dpi。p3X无知


p3X无知

如果画布的高度或宽度是0,那么会返回字符串“data:,”。p3X无知

如果传入的类型非“image/png”,但是返回的值以“data:image/png”开头,那么该传入的类型是不支持的。p3X无知

Chrome支持“image/webp”类型。p3X无知

语法p3X无知

canvas.toDataURL(type, encoderOptions);p3X无知

参数p3X无知


p3X无知

type(可选):图片格式,默认为 image/pngp3X无知

encoderOptions (可选):在指定图片格式为 image/jpeg 或 image/webp的情况下,可以从 0 到 1 的区间内选择图片的质量。如果超出取值范围,将会使用默认值 0.92。其他参数会被忽略。p3X无知

返回值p3X无知

包含 data URI 的DOMString。p3X无知

// canvas 为canvas的dom节点
// name 为生成图片的名字
function downLoadImage(canvas,name) {
  var a = document.createElement("a");
  a.href = canvas.toDataURL();
  // download 属性定义了下载链接的地址
  a.download = name;
  a.click();
}

————————————————p3X无知

版权声明:本文为CSDN博主「孤岛的千城」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。p3X无知

原文链接:p3X无知

https://blog.csdn.net/weixin_45337170/article/details/114128119

注意:以上方法在微信中打开不行,提示要在浏览器中打开;但是用手机浏览器打开下载的图片再打开却提示格式有问题,无法查看。想通过微信发送到电脑上,结果提示:获取资源失败,然后尝试通过QQ发送到电脑才成功了,看来还是QQ比较强大。p3X无知

在电脑上查看下载下来的文件,内容如下:p3X无知

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">    
<html>    
<head>    
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">    
<meta http-equiv="Content-Script-Type" content="text/javascript">    
<script type="text/javascript">    
function getCookie(c_name) { // Local function for getting a cookie value    
if (document.cookie.length > 0) {    
c_start = document.cookie.indexOf(c_name + "=");    
if (c_start!=-1) {    
c_start=c_start + c_name.length + 1;    
c_end=document.cookie.indexOf(";", c_start);    
if (c_end==-1)    
c_end = document.cookie.length;    
return unescape(document.cookie.substring(c_start,c_end));    
}    
}    
return "";    
}    
function setCookie(c_name, value, expiredays) { // Local function for setting a value of a cookie    
var exdate = new Date();    
exdate.setDate(exdate.getDate()+expiredays);    
document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + exdate.toGMTString()) + ";path=/";    
}    
function getHostUri() {    
var loc = document.location;    
return loc.toString();    
}    
setCookie('YPF8827340282Jdskjhfiw_928937459182JAX666', '27.186.177.138', 10);    
try {    
location.reload(true);    
} catch (err1) {    
try {    
location.reload();    
} catch (err2) {    
   	location.href = getHostUri();    
}    
}    
</script>    
</head>    
<body>    
<noscript>This site requires JavaScript and Cookies to be enabled. Please change your browser settings or upgrade your browser.</noscript>    
</body>    
</html>

所以后来的解决办法是:
p3X无知

var img = document.createElement("img");p3X无知

  img.src = canvas.toDataURL();p3X无知

然后把画布隐藏,显示图片,这样微信中长按图片就可以保存到本地或者发送给朋友了。p3X无知

本文为转载文章,版权归原作者所有,不代表本站立场和观点。

很赞哦! () 有话说 ()