Comment obtenir la taille d'une image rapidement en PHP à l'aide de file_get_contents
Obtenir les dimensions d'une image pour de nombreuses images distantes peut être une tâche fastidieuse, surtout en utilisant getimagesize. Voici une approche alternative qui exploite file_get_contents pour récupérer rapidement les tailles d'image :
Utilisation d'une fonction PHP personnalisée
La fonction ranger() suivante lit une plage d'octets spécifique à partir d'un image, permettant une extraction rapide de la taille :
function ranger($url){
$headers = array(
"Range: bytes=0-32768"
);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);
return $data;
}
Extraction de la taille de l'image
Une fois les données d'image obtenues, vous pouvez déterminer leurs dimensions à l'aide de imagecreatefromstring() et des fonctions d'analyse d'image intégrées :
$im = imagecreatefromstring($raw);
$width = imagesx($im);
$height = imagesy($im);
Mesure des performances
Grâce à cette méthode, le processus d'obtention des dimensions de l'image est nettement plus rapide :
$start = microtime(true);
$url = "http://news.softpedia.com/images/news2/Debian-Turns-15-2.jpeg";
$raw = ranger($url);
$im = imagecreatefromstring($raw);
$width = imagesx($im);
$height = imagesy($im);
$stop = round(microtime(true) - $start, 5);
echo $width." x ".$height." ({$stop}s)";
Résultats des tests
L'exemple d'image n'a pris que 0,20859 secondes pour être récupéré ses dimensions. Le chargement de 32 Ko de données s'est avéré efficace dans cette approche. En appliquant cette technique, vous pouvez obtenir rapidement la taille des images distantes, minimisant ainsi les goulots d'étranglement généralement rencontrés avec getimagesize.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3