kwb
03-07-2014, 16:23
Sto cercando di convertire un'immagine presa tramite js AJAX ( con jQuery ) da un altro dominio in base64.
Utilizzo questa tecnica che pare essere l'unica possibile, trovata su StackOverflow:
function convertImgToBase64(url, callback, outputFormat){
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'),
img = new Image;
img.crossOrigin = 'Anonymous';
img.onload = function(){
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img,0,0);
var dataURL = canvas.toDataURL(outputFormat || 'image/png');
console.log(dataURL);
callback.call(this, dataURL);
canvas = null;
};
img.src = url;
}
convertImgToBase64(miaImgDaAltroDominio,function(data){
var base64 = data.split('base64'); //Il codice si trova su base64[1]
});
Ora questo codice è stato testato in locale ( con immagini che arrivano dallo stesso dominio ) e funziona perfettamente.
Il problema sorge quando le immagini arrivano da un altro dominio: infatti dopo l'istruzione
img.src = url; //url contiene il link all'immagine!
Stampando img.src con console.log mi ritrovo il link nel seguente formato:
indirizzo_del_dominio_corrente+url
Per esempio, se mi trovo su esempio1.com/pagina/p1.php e faccio partire lo script per recuperare l'immagine che si trova su esempio2.com/imgs/immagine.png
Il mio img.src risulterà uguale a: esempio1.com/pagina/esempio2.com/imgs/immagine.png
C'è modo di ovviare a questo problema??
Utilizzo questa tecnica che pare essere l'unica possibile, trovata su StackOverflow:
function convertImgToBase64(url, callback, outputFormat){
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'),
img = new Image;
img.crossOrigin = 'Anonymous';
img.onload = function(){
canvas.height = img.height;
canvas.width = img.width;
ctx.drawImage(img,0,0);
var dataURL = canvas.toDataURL(outputFormat || 'image/png');
console.log(dataURL);
callback.call(this, dataURL);
canvas = null;
};
img.src = url;
}
convertImgToBase64(miaImgDaAltroDominio,function(data){
var base64 = data.split('base64'); //Il codice si trova su base64[1]
});
Ora questo codice è stato testato in locale ( con immagini che arrivano dallo stesso dominio ) e funziona perfettamente.
Il problema sorge quando le immagini arrivano da un altro dominio: infatti dopo l'istruzione
img.src = url; //url contiene il link all'immagine!
Stampando img.src con console.log mi ritrovo il link nel seguente formato:
indirizzo_del_dominio_corrente+url
Per esempio, se mi trovo su esempio1.com/pagina/p1.php e faccio partire lo script per recuperare l'immagine che si trova su esempio2.com/imgs/immagine.png
Il mio img.src risulterà uguale a: esempio1.com/pagina/esempio2.com/imgs/immagine.png
C'è modo di ovviare a questo problema??