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 相关文章推荐
splice slice区别
Oct 09 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
Feb 11 Javascript
ajax+jQuery实现级联显示地址的方法
May 06 Javascript
概述VUE2.0不可忽视的很多变化
Sep 25 Javascript
实现隔行换色效果的两种方式【实用】
Nov 27 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
Dec 07 Javascript
Vue生命周期示例详解
Apr 12 Javascript
react-router实现跳转传值的方法示例
May 27 Javascript
JavaScript实现短信倒计时60s
Oct 09 Javascript
写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab
Mar 06 Javascript
基于iScroll实现内容滚动效果
Mar 21 Javascript
vue实现按需加载组件及异步组件功能
May 27 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
PHP 定界符 使用技巧
2009/06/14 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
php异常处理使用示例
2014/02/25 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
python数据结构之二叉树的遍历实例
2014/04/29 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
Python采用Django开发自己的博客系统
2020/09/29 Python
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
万代美国官网:PREMIUM BANDAI USA
2020/09/11 全球购物
启动一个线程是用run()还是start()
2016/12/25 面试题
司马光教学反思
2014/02/01 职场文书
护理不良事件检讨书
2014/02/06 职场文书
goland 设置project gopath的操作
2021/05/06 Golang
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers