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 相关文章推荐
javascript CSS画图之基础篇
Jul 29 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
Jun 06 Javascript
多种jQuery绑定事件的实现方式
Jun 13 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
Aug 10 Javascript
利用jquery实现瀑布流3种案例
Sep 18 Javascript
D3.js实现饼状图的方法详解
Sep 21 Javascript
微信小程序 video详解及简单实例
Jan 16 Javascript
详解AngularJS 过滤器的使用
Jun 02 Javascript
基于VUE实现的九宫格抽奖功能
Sep 30 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
Apr 02 Javascript
微信小程序纯文本实现@功能
Apr 08 Javascript
js实现滑动进度条效果
Aug 21 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
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
js实现常用排序算法
2016/08/09 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
Vue2.x中的Render函数详解
2017/05/30 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
详解python eval函数的妙用
2017/11/16 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
Pandas 数据处理,数据清洗详解
2018/07/10 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
Python设计模式之组合模式原理与用法实例分析
2019/01/11 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
Python requests模块实例用法
2019/02/11 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
机电专业个人求职信范文
2013/12/30 职场文书
小松树教学反思
2014/02/11 职场文书
数学检讨书1000字
2014/02/24 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
Python数组变形的几种实现方法
2022/05/30 Python