js将canvas生成图片并保存到本地
微wx笑
2022-07-12【前端开发】
2
0关键字:
js canvas
需求将 canvas 生成图片并保存到本地方案使用 Canvas 的 toDataURL() 方法HTMLCanvasElement.toDataURL() 方法返回一个包含图片展示的 data URI 。可以使用 type 参数其类
需求
将 canvas 生成图片并保存到本地
方案
使用 Canvas 的 toDataURL() 方法
HTMLCanvasElement.toDataURL() 方法返回一个包含图片展示的 data URI 。可以使用 type 参数其类型,默认为 PNG 格式。图片的分辨率为96dpi。
如果画布的高度或宽度是0,那么会返回字符串“data:,”。
如果传入的类型非“image/png”,但是返回的值以“data:image/png”开头,那么该传入的类型是不支持的。
Chrome支持“image/webp”类型。
语法
canvas.toDataURL(type, encoderOptions);
参数
type(可选):图片格式,默认为 image/png
encoderOptions (可选):在指定图片格式为 image/jpeg 或 image/webp的情况下,可以从 0 到 1 的区间内选择图片的质量。如果超出取值范围,将会使用默认值 0.92。其他参数会被忽略。
返回值
包含 data URI 的DOMString。
// canvas 为canvas的dom节点
// name 为生成图片的名字
function downLoadImage(canvas,name) {
var a = document.createElement("a");
a.href = canvas.toDataURL();
// download 属性定义了下载链接的地址
a.download = name;
a.click();
}————————————————
版权声明:本文为CSDN博主「孤岛的千城」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
https://blog.csdn.net/weixin_45337170/article/details/114128119注意:以上方法在微信中打开不行,提示要在浏览器中打开;但是用手机浏览器打开下载的图片再打开却提示格式有问题,无法查看。想通过微信发送到电脑上,结果提示:获取资源失败,然后尝试通过QQ发送到电脑才成功了,看来还是QQ比较强大。
在电脑上查看下载下来的文件,内容如下:
<!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>所以后来的解决办法是:
var img = document.createElement("img");
img.src = canvas.toDataURL();
然后把画布隐藏,显示图片,这样微信中长按图片就可以保存到本地或者发送给朋友了。
本文为转载文章,版权归原作者所有,不代表本站立场和观点。



