
JS实用方法DataUrl转为File、url转base64
发布日期:2021-05-08 23:07:49
浏览次数:15
分类:博客文章
本文共 3321 字,大约阅读时间需要 11 分钟。
目录
1,DataUrl转为File
/*** DataUrl转为File* @param {String} dataUrl - dataUrl地址* @param {String} fileName - file文件名*/dataURLtoFile(dataUrl, fileName){ var arr = dataUrl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while(n--){ u8arr[n] = bstr.charCodeAt(n); } return new File([u8arr], fileName, {type:mime});}
2,url转base64
/*** url转base64* @param {String} url - url地址*/urlToBase64(url) { return new Promise ((resolve,reject) => { let image = new Image(); image.onload = function() { let canvas = document.createElement('canvas'); canvas.width = this.naturalWidth; canvas.height = this.naturalHeight; // 将图片插入画布并开始绘制 canvas.getContext('2d').drawImage(image, 0, 0); // result let result = canvas.toDataURL('image/png') resolve(result); }; // CORS 策略,会存在跨域问题https://stackoverflow.com/questions/20424279/canvas-todataurl-securityerror image.setAttribute("crossOrigin",'Anonymous'); image.src = url; // 图片加载失败的错误处理 image.onerror = () => { reject(new Error('转换失败')); }; });}//使用例子this.urlToBase64(this.Url).then(res=>{ console.log(res);})
3,生成Uuid
function CreateUuid() { let Time = new Date().getTime(); let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' .replace(/[xy]/g, function(res) { let Random = (Time + Math.random() * 16) % 16 | 0; Time = Math.floor(Time / 16); return (res == 'x' ? Random : (Random & 0x3 | 0x8)).toString(16); }); return "pdd"+ uuid;};
4,获取url路径后的参数
// 不传name返回所有值,否则返回对应值function getUrlParams(name) { var url = window.location.search; if (url.indexOf('?') == 1) { return false; } url = url.substr(1); url = url.split('&'); var name = name || ''; var nameres; // 获取全部参数及其值 for(var i=0;i
5,Canvas生成水印
/*** Canvas生成水印* @param {dom} element - dom元素* @param {String} text - 水印文本*/function watermark(element, text) { var canvas = '' , ctx = '' , data = '' , fontWidth = '12.5' , node = document.querySelector(element) , width = node.clientWidth , height = node.clientHeight; canvas = document.createElement("canvas"); canvas.width = "100"; canvas.height = "100"; ctx = canvas.getContext("2d"); ctx.clearRect(0, 0, 200, 200); fontWidth = document.documentElement.clientWidth * 3 * 12.5 / 4000; ctx.font = fontWidth + "px 黑体"; ctx.rotate(-20 * Math.PI / 180); ctx.fillStyle = "rgba(0,0,0, .2)"; ctx.fillText(text, -20, 80); data = canvas.toDataURL("image/png", 1); node.style.background = 'url(' + data + ') repeat';};watermark("#canvas","相约1998");
6,请求本地Json
let Params = 'data/data.json';// 方法一var PddAjax2 = new Promise(PddAjax);// 成功PddAjax2.then(function(res){ console.log(res)})function PddAjax(resolve , reject){ this.Params = Params; $.ajax({ type:'get', url:Params, success: function(res) { resolve(res); }, error: function(res) { reject(res); } })}// 方式二async function request(res){ let request = await fetch(Params); let res = await request.json(); console.log(res);};
如果看了觉得有帮助的,我是@鹏多多,欢迎 点赞 关注 评论;END
往期文章
个人主页
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年05月01日 08时57分15秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Bootstrap5】精细学习记录
2019-03-08
Struts2-从值栈获取list集合数据(三种方式)
2019-03-08
参考图像
2019-03-09
设计模式(18)——中介者模式
2019-03-09
推荐几篇近期必看的视觉综述,含GAN、Transformer、人脸超分辨、遥感等
2019-03-09
【专题3:电子工程师 之 上位机】 之 【46.QT音频接口】
2019-03-09
一文理解设计模式--命令模式(Command)
2019-03-09
VTK:可视化之RandomProbe
2019-03-09
block多队列分析 - 2. block多队列的初始化
2019-03-09
Java时间
2019-03-09
不编译只打包system或者vendor image命令
2019-03-09
【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
2019-03-09
flink启动(二)
2019-03-09
pair的用法
2019-03-09
Flex 布局的自适应子项内容过长导致其被撑大问题
2019-03-09
PL/SQL 动态Sql拼接where条件
2019-03-09
【换行符】什么时候用cin.get()吃掉输入流中的换行符
2019-03-09
广东外语外贸大学第三届网络安全大赛Writeup
2019-03-09