Javascript将图片的绝对路径转换为base64编码的方法


Posted in Javascript onJanuary 11, 2018

我们可以使用canvas.toDataURL的方法将图片的绝对路径转换为base64编码;在这我们引用的是淘宝首页一张图片如下:

var img = "https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg";

我们如下编写代码:

function getBase64Image(img) {
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0, img.width, img.height);
    var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();
    var dataURL = canvas.toDataURL("image/"+ext);
    return dataURL;
}
var img = "https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg";
var image = new Image();
image.src = img;
image.onload = function(){
  var base64 = getBase64Image(image);
  console.log(base64);
}

chrome 运行如下所示:

Javascript将图片的绝对路径转换为base64编码的方法

通过搜索明白,我们使用的是淘宝服务器上的一张图片,在本地服务器下访问,结果出现图片跨域的问题;为止,我们可以把图片放在本地服务器下即可解决上面的跨域问题;比如我现在将淘宝服务器下的图片保存在本地服务器下;如下代码即可解决:

var img = "http://127.0.0.1/base64/1.jpg";
function getBase64Image(img) {
  var canvas = document.createElement("canvas");
  canvas.width = img.width;
  canvas.height = img.height;
  var ctx = canvas.getContext("2d");
  ctx.drawImage(img, 0, 0, img.width, img.height);
  var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();
      var dataURL = canvas.toDataURL("image/"+ext);
  return dataURL;
}
var image = new Image();
image.src = img;
image.onload = function(){
  var base64 = getBase64Image(image);
  console.log(base64);
}

但是有时候我们想引用其他服务器下的图片该如何解决呢?我们可以使用下面这一句代码在chrome和firefox下生效,在目前safari6以下貌似不支持;如下代码:

image.crossOrigin = '';

所有代码如下:

var img = "https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg";
//var img = "http://127.0.0.1/base64/1.jpg";
function getBase64Image(img) {
  var canvas = document.createElement("canvas");
  canvas.width = img.width;
  canvas.height = img.height;

  var ctx = canvas.getContext("2d");
  ctx.drawImage(img, 0, 0, img.width, img.height);
  var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();
  var dataURL = canvas.toDataURL("image/"+ext);
  return dataURL;
}
var image = new Image();
image.crossOrigin = '';
image.src = img;
image.onload = function(){
  var base64 = getBase64Image(image);
  console.log(base64);
}

如上代码在chrome和firefox下,经测试生效,在safari目前不支持;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
再谈IE中Flash控件的自动激活 ObjectWrap
Mar 09 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
Feb 09 Javascript
js setTimeout 常见问题小结
Aug 13 Javascript
JavaScript中日期的相关操作方法总结
Oct 24 Javascript
jQuery内容过滤选择器用法示例
Sep 09 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
Feb 19 Javascript
详谈js中数组(array)和对象(object)的区别
Feb 27 Javascript
JavaScript Canvas绘制圆形时钟效果
Aug 20 Javascript
小程序ios音频播放没声音问题的解决
Jul 11 Javascript
微信小程序上传多图到服务器并获取返回的路径
May 05 Javascript
VueCli4项目配置反向代理proxy的方法步骤
May 17 Javascript
让JavaScript代码更加精简的方法技巧
Jun 01 Javascript
如何去除vue项目中的#及其ie9兼容性
Jan 11 #Javascript
全新打包工具parcel零配置vue开发脚手架
Jan 11 #Javascript
详解VUE2.X过滤器的使用方法
Jan 11 #Javascript
Vuex提升学习篇
Jan 11 #Javascript
浅谈Node.js爬虫之网页请求模块
Jan 11 #Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
Jan 11 #Javascript
angular2中Http请求原理与用法详解
Jan 11 #Javascript
You might like
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
jQuery对下拉框,单选框,多选框的操作
2014/02/21 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
2016/02/19 Javascript
javascript中数组和字符串的方法对比
2016/07/20 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
OpenCV 模板匹配
2019/07/10 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
新农村建设汇报材料
2014/08/15 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
开会通知短信大全
2015/04/20 职场文书
技能培训通讯稿
2015/07/18 职场文书
基于Go语言构建RESTful API服务
2021/07/25 Golang