第一种:Image + canvas

const getBase64Image = src => {return new Promise(resolve => {const img = new Image()img.crossOrigin = ''img.src = srcimg.onload = function () {const canvas = document.createElement('canvas')canvas.width = img.widthcanvas.height = img.heightconst ctx = canvas.getContext('2d')ctx?.drawImage(img, 0, 0, img.width, img.height)const ext = img.src.substring(img.src.lastIndexOf('.') + 1).toLowerCase()const dataURL = canvas.toDataURL('image/' + ext)resolve(dataURL)}})
}

第二种:xhr + FileReader

const getBase64Image = src => {return new Promise(resolve => {let xhr = new XMLHttpRequest()xhr.open('get', src, true)xhr.responseType = 'blob'xhr.onload = function () {if (this.status == 200) {let blob = this.responselet oFileReader = new FileReader()oFileReader.onloadend = function (e) {const base64 = e.target.resultresolve(base64)}oFileReader.readAsDataURL(blob)}}xhr.send()})
}

js将图片转base64两种方法相关推荐

  1. iOS: JS和Native交互的两种方法,iosjsnative交互

    iOS: JS和Native交互的两种方法,iosjsnative交互 背景: UIWebView: iOS 用来展示 web 端内容的控件. 1. 核心方法: - (NSString*)string ...

  2. qt 加载 图片旋转_QT 实现图片旋转的两种方法

    第一种方案 使用 QPixmap 的 transformed 函数来实现旋转,这个函数默认是以图片中心为旋转点,不能设置旋转的中心点,使用如下: QMatrix matrix; matrix.rota ...

  3. android 图片叠加xml,Android实现图片叠加效果的两种方法

    本文实例讲述了Android实现图片叠加效果的两种方法.,具体如下: 效果图: 第一种: 第二种: 第一种是通过canvas画出来的效果: public void first(View v) { // ...

  4. JS区分中英文字符的两种方法

    JS区分中英文字符的两种方法: 正则和charCodeAt()方法. 正则无疑是最强大的判断各种条件的方法, 最近也在研习它, 虽然枯燥, 但仍有乐趣. 用它来判断一个双字节的中文字符也是轻而易举地. ...

  5. pytorch加载自己的图片数据集的两种方法

    目录 ImageFolder 加载数据集 使用pytorch提供的Dataset类创建自己的数据集. Dataset加载数据集 接下来我们就可以构建我们的网络架构: 训练我们的网络: 保存网络模型(这 ...

  6. D3D中2D图片的绘制两种方法

    2014/09/19 (转载自:http://blog.csdn.net/rabbit729/article/details/6388703) 想要在D3D中加载2D图片可以使用如下两种方法(我只想到 ...

  7. android 画布叠加,Android实现图片叠加效果的两种方法

    本文实例讲述了Android实现图片叠加效果的两种方法.分享给大家供大家参考,具体如下: 效果图: 第一种: 第二种: 第一种是通过canvas画出来的效果: public void first(Vi ...

  8. java 图片压缩100k_Java 实现图片压缩的两种方法

    问题背景. 典型的情景:Nemo社区中,用户上传的图片免不了要在某处给用户做展示. 如用户上传的头像,那么其他用户在浏览该用户信息的时候,就会需要回显头像信息了. 用户上传的原图可能由于清晰度较高而体 ...

  9. js循环添加事件的两种方法

    js循环添加事件的两种方法 选择下拉列表中的一个li将文本传到框中 问题:写此二级菜单时用到的方法不好,对此进行优化 原始js代码: <script>// 思路:1.点击下拉框a时,ul中 ...

最新文章

  1. python堆堆乐教程_python堆排序,详细过程图和讲解,这样做小白都会
  2. 浏览器解析JavaScript原理
  3. 认知空间是什么意思_百变立体空间 搭建创意世界
  4. 开启企业级市场转型之路 群晖亮出安全“杀手锏”
  5. idea错误提示不明显_微信公众号扫一扫功能提示:10003 redirect_uri域名与后台配置不一致错误解决方案...
  6. 【算法设计】最大子段和问题解析(对应算法第三题)
  7. 解决IP地址冲突的问题
  8. fatal error: krb5.h: 没有那个文件或目录
  9. 7个示例科普CPU Cache(from 酷壳网)
  10. 两级联动mysql怎样查询_我的二级联动下拉框(方便以后查询)
  11. Chrome浏览器插件之---FeHelper
  12. 条件变量之虚假唤醒 (Spurious wakeup)
  13. Shader山下(十九)标记Tag
  14. python如何debug找到错误_调试python,我找不到哪里出错了?
  15. NodeJs视频教程 NodeJs零基础实战视频教程-来自三人行慕课
  16. 软件开发延期引发纠纷-律师随笔
  17. 八种网络攻击类型,你了解多少?
  18. 在python中 0oa1是合法_在Python中0oa1是合法的八进制数字表示形式。
  19. 超实用的菜单栏管理工具:Bartender 4 Mac版
  20. Vuforia添加虚拟按键

热门文章

  1. 2016年html5游戏 报告,是寒冬还是风口?2015年HTML5游戏完整产业链报告
  2. Excel如何批量添加图片批注?
  3. 【崩坏学园2 不止】使用unity-studio提取并制作游戏内看板
  4. python-django的JsonResponse返回中文数据编码问题
  5. 不需要网络的调频收音机_五六十年代不需要电的收音机
  6. 【软件测试】入门答疑,概念
  7. Cocos2d-x 3.0正式版 HelloWorld分析
  8. Random之nextInt函数
  9. 友盟的常见使用----三方登陆、分享和“埋点”(友盟统计)
  10. koa2搭建项目(一)