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 相关文章推荐
jquery实现的一个导航滚动效果具体代码
May 27 Javascript
jquery 获取表单元素里面的值示例代码
Jul 28 Javascript
jquery调取json数据实现省市级联的方法
Jan 29 Javascript
使用AngularJS实现可伸缩的页面切换的方法
Jun 19 Javascript
详解javascript数组去重问题
Nov 06 Javascript
学习JavaScript设计模式之模板方法模式
Jan 20 Javascript
Jquery根据浏览器窗口改变调整大小的方法
Feb 07 Javascript
浅谈vue项目重构技术要点和总结
Jan 23 Javascript
vue.js实现的经典计算器/科学计算器功能示例
Jul 11 Javascript
js正则取值的结果数组调试方法
Oct 10 Javascript
深入理解react 组件类型及使用场景
Mar 07 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
Sep 18 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 在线翻译函数代码
2009/05/07 PHP
php在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
PHP微信分享开发详解
2017/01/14 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
使用异步controller与jQuery实现卷帘式分页
2019/06/18 jQuery
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
Python中单例模式总结
2018/02/20 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
python读取Excel实例详解
2018/08/17 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
Django基础知识 web框架的本质详解
2019/07/18 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
几个人围成一圈的问题
2013/09/26 面试题
软件测试工程师面试问题精选
2016/10/28 面试题
挂牌仪式主持词
2014/03/20 职场文书
情况说明书格式范文
2014/05/06 职场文书
学用政策心得体会
2014/09/10 职场文书
警示教育片观后感
2015/06/17 职场文书
工程进度款催款函
2015/06/24 职场文书
Python数据分析之绘图和可视化详解
2021/06/02 Python