主题:
JavaScript把项目本地的图片或者图片的绝对路径转为base64字符串、blob对象在上传。
用处:
从本地选择图片上传,如项目规定只能选择本项目文件夹下的图像上传为头像等。
主要思想:
使用canvas.toDataURL()方法将图片的绝对路径转换为base64编码.
具体用法:
在这我们引用淘宝服务器上的一张图片举例:
var imgSrc = "https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg"; // var imgSrc = "img/1.jpg"; function getBase64(img){//传入图片路径,返回base64 function getBase64Image(img,width,height) {//width、height调用时传入具体像素值,控制大小 ,不传则默认图像大小 var canvas = document.createElement("canvas"); canvas.width = width "2d"); ctx.drawImage(img, 0, 0, canvas.width, canvas.height); var dataURL = canvas.toDataURL(); return dataURL; } var image = new Image(); image.src = img; var deferred=$.Deferred(); if(img){ image.onload =function (){ deferred.resolve(getBase64Image(image));//将base64传给done上传处理 } return deferred.promise();//问题要让onload完成后再return sessionStorage['imgTest'] } } getBase64(imgSrc) .then(function(base64){ console.log(base64); },function(err){ console.log(err); });
此时在chrome测试,运行时会报错!
原因:
我们使用的是淘宝服务器上的图片,在本地服务器下访问,结果出现图片跨域的问题。
处理方案:
一、将图片放在本地服务器
var imgSrc = "img/1.jpg";//本地项目文件夹下的图片 function getBase64(img){//传入图片路径,返回base64 function getBase64Image(img,width,height) { var canvas = document.createElement("canvas"); canvas.width = width "2d"); ctx.drawImage(img, 0, 0, canvas.width, canvas.height); var dataURL = canvas.toDataURL(); return dataURL; } var image = new Image(); image.src = img; var deferred=$.Deferred(); if(img){ image.onload =function (){ deferred.resolve(getBase64Image(image));//将base64传给done上传处理 } return deferred.promise();//问题要让onload完成后再return sessionStorage['imgTest'] } } getBase64(imgSrc) .then(function(base64){ console.log(base64); },function(err){ console.log(err); });
二、 跨域
想引用其他服务器下的图片该如何解决呢?
我们可以使用下面这一句代码解决跨域。
image.crossOrigin = '';
测试在chrome和firefox,ie9+下生效,在目前safari6以下貌似不支持。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>nick getBase64</title> </head> <body> <div><img id="test" src="/UploadFiles/2021-04-02/">上面是本功能的完整代码,亲们,可以测试咯!
这样就本地图片和其他服务器上的图片都可以处理了!
结语:
想要了解更多的有关上传头像功能,可参考《浅析上传头像示例及其注意事项》
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 仙境传说新启航职业排行榜大全 仙境传说最强职业是哪个
- 群星《网络新歌曲速报》3CD[DTS-WAV分轨]
- 群星《男人必听》一张男人开车时必听的绝世好歌[WAV]
- 群星《再见新歌》2CD【DTS-WAV分轨】
- 黎瑞恩.1992-雨季不再来【宝丽金】【WAV+CUE】
- 曹雅雯.2018-小说【美乐蒂】【FLAC分轨】
- 温拿乐队.2007-温拿33好时光演唱会2CD(2024环球红馆40复刻系列)【环球】【WAV+CUE】
- 魔兽世界地心之战戒律牧用什么附魔宝石 地心之战戒律牧附魔宝石推荐
- 仙境传说新启航公测兑换码汇总 仙境传说最新兑换码礼包大全
- 魔兽世界地心之战神牧用什么饰品 地心之战神牧饰品推荐
- 群星《聆听·极致女声》2CD[DTS-WAV]
- 群星《五大最美女中音》2CD[DTS-WAV]
- 群星《这座城市的歌》2CD[DTS-WAV]
- 大自然音乐系列《缤纷四季》[WAV/CUE/分轨][567.9MB]
- 《宝岛情歌·甜歌声声醉》黑胶2CD[WAV+CUE][900MB]