Maison > interface Web > js tutoriel > le corps du texte

Javascript convertit le chemin absolu de l'image en codage base64

小云云
Libérer: 2018-01-13 09:04:52
original
6291 Les gens l'ont consulté

Cet article présente principalement la méthode Javascript pour convertir le chemin absolu d'une image en encodage base64. Je pense que c'est plutôt bien, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l’éditeur et jetons un coup d’œil. J'espère que cela aide tout le monde.

Nous pouvons utiliser la méthode canvas.toDataURL pour convertir le chemin absolu de l'image en codage base64 ; nous citons ici une image sur la page d'accueil de Taobao comme suit :

Le code est comme suit :

var img = "https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg";
Copier après la connexion

Nous écrivons le code comme suit :


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);
}
Copier après la connexion

chrome fonctionne comme ceci :

Grâce à la recherche, nous avons découvert que nous utilisions une image sur le serveur Taobao et y avons accédé sous le serveur local. En conséquence, il y a eu un problème inter-domaines avec l'image ; jusqu'à présent, nous pouvons mettre l'image sous le serveur local pour résoudre le problème ci-dessus. Par exemple, j'enregistre maintenant les images sur le serveur Taobao sur le serveur local ;


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);
}
Copier après la connexion
Mais parfois, comment doit-on résoudre le problème lorsque l'on souhaite référencer des images provenant d'autres serveurs ? Nous pouvons utiliser le code suivant pour prendre effet sous chrome et firefox Il ne semble pas être supporté sous safari6 actuellement :



image.crossOrigin = '';
Copier après la connexion
. Tous les codes sont les suivants :



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);
}
Copier après la connexion
Le code ci-dessus a été testé et efficace sous Chrome et Firefox, mais n'est actuellement pas pris en charge dans Safari


Recommandations associées :


Comment utiliser le chemin absolu et le chemin relatif du html

Comment utiliser dirname( __FILE__) en php pour obtenir le chemin absolu du fichier actuel

Explication détaillée de la différence entre les chemins relatifs et les chemins absolus

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal