博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
毕业论文—使用js将canvas保存为图片文件,并且自定义文件名
阅读量:6953 次
发布时间:2019-06-27

本文共 1279 字,大约阅读时间需要 4 分钟。

该文章引用http://blog.csdn.net/qq547276542/article/details/51906741

1、从canvas中直接提取图片元数据

// 图片导出为 png 格式
var 
type = 
'png'
;
var 
imgData = canvas.toDataURL(type);

上面的代码得到的数据格式为:data:image/png;base64,.....

2、将mime-type改为image/octet-stream,强制让浏览器直接download

/**
 
* 获取mimeType
 
* @param  {String} type the old mime-type
 
* @return the new mime-type
 
*/
var 
_fixType = 
function
(type) {
    
type = type.toLowerCase().replace(/jpg/i, 
'jpeg'
);
    
var 
r = type.match(/png|jpeg|bmp|gif/)[0];
    
return 
'image/' 
+ r;
};
   
// 加工image data,替换mime type
imgData = imgData.replace(_fixType(type),
'image/octet-stream'
);

上面这个代码得到的数据格式为:data:image/octet-stream;base64,.....

3、图片download到本地

/**
 
* 在本地进行文件保存
 
* @param  {String} data     要保存到本地的图片数据
 
* @param  {String} filename 文件名
 
*/
var 
saveFile = 
function
(data, filename){
    
var 
save_link = document.createElementNS(
'http://www.w3.org/1999/xhtml'
'a'
);
    
save_link.href = data;
    
save_link.download = filename;
   
    
var 
event = document.createEvent(
'MouseEvents'
);
    
event.initMouseEvent(
'click'
true
false
, window, 0, 0, 0, 0, 0, 
false
false
false
false
, 0, 
null
);
    
save_link.dispatchEvent(event);
};
   
// 下载后的问题名
var 
filename = 
'baidufe_' 
+ (
new 
Date()).getTime() + 
'.' 
+ type;
// download
saveFile(imgData,filename);

转载于:https://www.cnblogs.com/GoTing/p/6206466.html

你可能感兴趣的文章
Consul入门03 - 注册服务
查看>>
[Centos]necessary tools for newbie
查看>>
前端临床手札——单元测试
查看>>
Java IO : File
查看>>
JavaScript Ajax与Comet——“进度事件”的注意要点
查看>>
[单刷APUE系列]第四章——文件和目录[2]
查看>>
MySQL Replication
查看>>
JavaScript数组去重总结
查看>>
MVVM_Android-CleanArchitecture
查看>>
iOS开发-协议Protocol&代理delegate
查看>>
【系统架构师修炼之道】(4):绪论——Zachman 框架
查看>>
Foxify v0.10.7 发布,基于 TypeScript 的 Node 框架
查看>>
Python数据结构——双端队列
查看>>
GitHub 项目推荐:用深度学习让你的照片变得美丽 ...
查看>>
2.HtmlAgilityPack 爬取优酷电影名进阶(所有分类+多线程)
查看>>
Rails 6.0.0 beta2 发布,开源 Web 应用框架
查看>>
Nginx 加/的区别
查看>>
UWP 大爆炸你个锤子
查看>>
Confluence 6 空间
查看>>
Kubernetes下一站,要做云的“分布式”Linux?
查看>>