Js 将图片的绝对路径转换为base64编码

转。。。。

 

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

 
 var img = "https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg";
 
我们如下编写代码:
 
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 运行如下所示:
 
 
 
通过搜索明白,我们使用的是淘宝服务器上的一张图片,在本地服务器下访问,结果出现图片跨域的问题;为止,我们可以把图片放在本地服务器下即可解决上面的跨域问题;比如我现在将淘宝服务器下的图片保存在本地服务器下;如下代码即可解决:
 
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 = '';
 
所有代码如下:
 
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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目前不支持;

转载于:https://www.cnblogs.com/cx709452428/p/6554135.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值