2010-10-22 5 views

Répondre

1

Vous pouvez obtenir la valeur de la propriété background-image avec window.getComputedStyle, puis créer un canevas et une image, appliquer la valeur au src de l'image, dessiner sur le canevas et enfin obtenir les données? = °

function getBgImageData(el,callback) { 
    var url, 
     image, 
     canvas = document.createElement('canvas'), 
     ctx = canvas.getContext('2d'); 

    // Allows el to be an element or an id 
    if(typeof el==='string') { 
    el = document.getElementById(el); 
    } 

    // Gets the value of the background-image property 
    url = window.getComputedStyle(el,null).backgroundImage; 
    // Removes the url("") part 
    url = url.substring(5,url.length-2); 

    // Creates the image 
    image = new Image(); 
    image.src = url; 
    image.onload = function() { 
    canvas.width = image.width; 
    canvas.height = image.height; 
    // Draws the image 
    ctx.drawImage(image,0,0); 

    if(callback) { 
     // Passes the data to the callback function 
     callback(canvas.toDataURL()); 
    } 
    }; 
} 

getBgImageData('someId',function(data) { 
    alert(data); 
}); 

(getComputedStyle ne fonctionne pas dans IE ... mais ni ne Canvas)

+0

Ne serait-ce lever une exception de sécurité si l'image est hébergé sur un domaine différent (bien, même sur la même domaine mais sous-domaine différent) – ArtBIT

+0

J'ai des autorisations à effet de levier (ce n'est pas une application web) – Ozgur

+0

une autre chose importante est de savoir si la création d'un élément d'image rechargera l'image réelle (ou l'utilisera du cache). Je vais le tester maintenant. – Ozgur