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 相关文章推荐
js读写cookie实现一个底部广告浮层效果的两种方法
Dec 29 Javascript
jquery动态添加删除一行数据示例
Jun 12 Javascript
jQuery中children()方法用法实例
Jan 07 Javascript
jQuery插件实现无缝滚动特效
Nov 24 Javascript
AngularJS控制器controller正确的通信的方法
Jan 25 Javascript
js中class的点击事件没有效果的解决方法
Oct 13 Javascript
Ajax和Comet技术总结
Feb 19 Javascript
Bootstrap进度条实现代码解析
Mar 07 Javascript
浅谈Angular路由守卫
Aug 26 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
Sep 28 Javascript
vue视频播放插件vue-video-player的具体使用方法
Nov 08 Javascript
OpenLayers3实现图层控件功能
Sep 25 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在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
PHP面向对象法则
2012/02/23 PHP
基于PHP常用字符串的总结(待续)
2013/06/07 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
js 弹出菜单/窗口效果
2011/10/30 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
NestJs使用Mongoose对MongoDB操作的方法
2021/02/22 Javascript
Python使用turtule画五角星的方法
2015/07/09 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
快速了解python leveldb
2018/01/18 Python
pycharm安装和首次使用教程
2018/08/27 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
python代码区分大小写吗
2020/06/17 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
廉洁自律承诺书
2014/03/27 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
转让协议书
2015/01/27 职场文书
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL
Redis+AOP+自定义注解实现限流
2022/06/28 Redis