欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Javascript将图片的绝对路径转换为base64编码的方法

程序员文章站 2022-04-29 12:08:06
我们可以使用canvas.todataurl的方法将图片的绝对路径转换为base64编码;在这我们引用的是淘宝首页一张图片如下: 复制代码 代码如下: var img...

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

复制代码 代码如下:

我们如下编写代码:

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目前不支持;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。