from - php cómo obtener el tamaño de la imagen web en kb?
php get image width and height from url (7)
Aparte de hacer una solicitud HTTP completa, no hay una manera fácil:
$img = get_headers("http://static.adzerk.net/Advertisers/2564.jpg", 1);
print $img["Content-Length"];
Sin embargo, es probable que pueda utilizar cURL
para enviar una solicitud HEAD
más clara .
php cómo obtener el tamaño de la imagen web en kb?
getimagesize
solo obtiene el ancho y alto.
y el filesize
causó waring
.
$imgsize=filesize("http://static.adzerk.net/Advertisers/2564.jpg");
echo $imgsize;
Warning: filesize() [function.filesize]: stat failed for http://static.adzerk.net/Advertisers/2564.jpg
¿Hay alguna otra manera de obtener un tamaño de imagen web en kb?
Aquí hay un buen enlace con respecto al tamaño del archivo ()
No puede usar el tamaño de archivo () para recuperar información de archivos remotos. Primero debe ser descargado o determinado por otro método.
Usar Curl aquí es un buen método:
Eso suena como un problema de permisos porque el tamaño de archivo () debería funcionar bien.
Aquí hay un ejemplo:
php > echo filesize("./9832712.jpg");
1433719
Asegúrese de que los permisos estén configurados correctamente en la imagen y que la ruta también sea correcta. Necesitará aplicar algunos cálculos matemáticos para convertir de bytes a KB, pero después de hacerlo, ¡debería estar en buena forma!
No estoy seguro acerca del uso de filesize()
para archivos remotos, pero hay buenos fragmentos en php.net, aunque se trata de usar cURL.
Puede obtener el tamaño del archivo utilizando la función get_headers (). Use el siguiente código:
$image = get_headers($url, 1);
$bytes = $image["Content-Length"];
$mb = $bytes/(1024 * 1024);
echo number_format($mb,2) . " MB";
Puedes usar también esta función
<?php
$filesize=file_get_size($dir.''/''.$ff);
$filesize=$filesize/1024;// to convert in KB
echo $filesize;
function file_get_size($file) {
//open file
$fh = fopen($file, "r");
//declare some variables
$size = "0";
$char = "";
//set file pointer to 0; I''m a little bit paranoid, you can remove this
fseek($fh, 0, SEEK_SET);
//set multiplicator to zero
$count = 0;
while (true) {
//jump 1 MB forward in file
fseek($fh, 1048576, SEEK_CUR);
//check if we actually left the file
if (($char = fgetc($fh)) !== false) {
//if not, go on
$count ++;
} else {
//else jump back where we were before leaving and exit loop
fseek($fh, -1048576, SEEK_CUR);
break;
}
}
//we could make $count jumps, so the file is at least $count * 1.000001 MB large
//1048577 because we jump 1 MB and fgetc goes 1 B forward too
$size = bcmul("1048577", $count);
//now count the last few bytes; they''re always less than 1048576 so it''s quite fast
$fine = 0;
while(false !== ($char = fgetc($fh))) {
$fine ++;
}
//and add them
$size = bcadd($size, $fine);
fclose($fh);
return $size;
}
?>
<?php
$file_size = filesize($_SERVER[''DOCUMENT_ROOT'']."/Advertisers/2564.jpg"); // Get file size in bytes
$file_size = $file_size / 1024; // Get file size in KB
echo $file_size; // Echo file size
?>