J'ai un site avec un portfolio géant avec une tonne d'images haute résolution.jQuery et Ajax Chargement d'images
Je ne veux pas redimensionner ces images, mais j'aimerais pouvoir les afficher en mode asynchrone.
Sors jQuery .ajax
Mais mon code est erroné, en quelque sorte. Ce qu'il fait est semble tirer dans la page, au lieu de l'image "src"
peut vous aider à:
// Load in the images via ajax:
var $imgs = $('.ajax-image');
$imgs.each(function(i){
var $imgsrc = $(this).attr('src');
var $url = '/php/pull-image.php?i=' + $imgsrc;
$.ajax({
url : $url,
mimeType: "text/plain",
processData : false,
cache: false,
success: function (html) {
$(this).attr('src', html);
}
});
});
et PHP:
$path = $_GET['i'];
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
echo 'data:image/' . $type . ';base64,' . base64_encode($data);
tags d'image sont simplement: <img src="http://example.com/images/image.ext" />
Qu'est-ce que je fais mal ici? et comment puis-je le réparer?
Comment cela améliorerait-il les performances? Vos images font partie du code HTML, elles sont donc chargées au fur et à mesure que le navigateur charge la page et vous ne remplacez l'attribut source qu'après avoir été à nouveau chargé dans javascript. Si vous voulez avoir une influence sur ce qui est chargé quand, ne les placez pas dans l'attribut 'src', mais par exemple dans un attribut' data-src' afin que le navigateur ne les charge pas. – jeroen
console.log (b64data), pour vérifier quelle est la réponse du serveur avant de l'utiliser.Essayez de cette façon en-tête ("Content-type: image /". $ Type); echo 'données: image /'. $ type. '; base64,'. base64_encode ($ data); –