Como obter o tamanho da imagem extremamente rápido em PHP usando file_get_contents
Obter dimensões de imagem para várias imagens remotas pode ser uma tarefa demorada, especialmente usando getimagesize. Aqui está uma abordagem alternativa que aproveita file_get_contents para recuperar rapidamente tamanhos de imagem:
Usando uma função PHP personalizada
A seguinte função ranger() lê um intervalo de bytes específico de um controle remoto imagem, permitindo extração rápida de tamanho:
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;
}
Extraindo o tamanho da imagem
Depois que os dados da imagem forem obtidos, você pode determinar suas dimensões usando imagecreatefromstring() e funções integradas de análise de imagem:
$im = imagecreatefromstring($raw);
$width = imagesx($im);
$height = imagesy($im);
Medição de desempenho
Usando este método, o processo de obtenção das dimensões da imagem é significativamente mais rápido:
$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)";
Resultados do teste
A imagem de exemplo levou apenas 0,20859 segundos para ser recuperada suas dimensões. O carregamento de 32 KB de dados provou ser eficaz nesta abordagem. Ao aplicar essa técnica, você pode obter rapidamente tamanhos de imagens remotas, minimizando os gargalos normalmente encontrados com getimagesize.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3