php как получить размер веб-изображения в КБ?
php как получить размер веб-изображения в КБ?
getimagesize
получить только ширину и высоту.
и filesize
причинил 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
есть ли другой способ получить веб-размер изображения в КБ?
7 ответов
за исключением выполнения полного HTTP-запроса, нет простого способа:
$img = get_headers("http://static.adzerk.net/Advertisers/2564.jpg", 1);
print $img["Content-Length"];
можно использовать cURL
отправить легче HEAD
вместо запрос.
<?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
?>
это звучит как проблема с разрешениями, потому что filesize () должен работать нормально.
вот пример:
php > echo filesize("./9832712.jpg");
1433719
убедитесь, что разрешения установлены правильно на картинку и что путь тоже правильный. Вам нужно будет применить некоторую математику для преобразования из байтов в КБ, но после этого вы должны быть в хорошей форме!
Не уверен в использовании filesize()
для удаленных файлов, но есть хорошие фрагменты на php.net хотя об использовании cURL.
вот хорошая ссылка на filesize ()
вы не можете использовать filesize () для получения информации об удаленном файле. Сначала он должен быть загружен или определен другим методом
использование Curl вот хороший метод:
вы также можете использовать эту функцию
<?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;
}
?>
вы можете получить размер файла с помощью функции get_headers (). Используйте ниже код:
$image = get_headers($url, 1);
$bytes = $image["Content-Length"];
$mb = $bytes/(1024 * 1024);
echo number_format($mb,2) . " MB";