Php Как получить размер веб-изображения в kb?
php как получить размер веб-изображения в kb?
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
Есть ли другой способ получить размер веб-изображения в kb?
Ответы
Ответ 1
Не выполняя полный HTTP-запрос, нет простого способа:
$img = get_headers("http://static.adzerk.net/Advertisers/2564.jpg", 1);
print $img["Content-Length"];
Скорее всего, вы можете использовать cURL
, чтобы отправить запрос lighter HEAD
.
Ответ 2
<?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
?>
Ответ 3
Это похоже на проблему с разрешениями, потому что файлize() должен работать нормально.
Вот пример:
php > echo filesize("./9832712.jpg");
1433719
Убедитесь, что разрешения правильно установлены на изображении и что путь также верен. Вам нужно будет применить математику для преобразования из байтов в КБ, но после этого вы должны быть в хорошей форме!
Ответ 4
Не уверен в использовании filesize()
для удаленных файлов, но есть хорошие фрагменты на php.net, хотя об использовании cURL.
http://www.php.net/manual/en/function.filesize.php#92462
Ответ 5
Вот хорошая ссылка относительно filesize()
Вы не можете использовать filesize() для получения информации о удаленных файлах. Его сначала нужно загрузить или определить другим способом.
Использование Curl здесь - хороший метод:
Учебник
Ответ 6
Вы также можете использовать эту функцию
<?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 quite fast
$fine = 0;
while(false !== ($char = fgetc($fh))) {
$fine ++;
}
//and add them
$size = bcadd($size, $fine);
fclose($fh);
return $size;
}
?>
Ответ 7
Вы можете получить размер файла, используя функцию get_headers(). Используйте ниже код:
$image = get_headers($url, 1);
$bytes = $image["Content-Length"];
$mb = $bytes/(1024 * 1024);
echo number_format($mb,2) . " MB";