php如何获取kb的web图像大小?

时间:2022-10-27 11:37:16

php how to get web image size in kb?

php如何获取kb的web图像大小?

getimagesize only get the width and height.

getimagesize只获得宽度和高度。

and filesize caused waring.

和文件大小导致了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

警告:filesize()[function.filesize]:stat为http://static.adzerk.net/Advertisers/2564.jpg失败

Is there any other way to get a web image size in kb?

有没有其他方法来获得kb的Web图像大小?

7 个解决方案

#1


18  

Short of doing a complete HTTP request, there is no easy way:

没有完成一个完整的HTTP请求,没有简单的方法:

$img = get_headers("http://static.adzerk.net/Advertisers/2564.jpg", 1);
print $img["Content-Length"];

You can likely utilize cURL however to send a lighter HEAD request instead.

但是,您可以使用cURL来发送更轻的HEAD请求。

#2


5  

<?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


3  

That sounds like a permissions issue because filesize() should work just fine.

这听起来像是权限问题,因为filesize()应该可以正常工作。

Here is an example:

这是一个例子:

php > echo filesize("./9832712.jpg");
1433719

Make sure the permissions are set correctly on the image and that the path is also correct. You will need to apply some math to convert from bytes to KB but after doing that you should be in good shape!

确保在图像上正确设置权限,并且路径也正确。你需要应用一些数学来从字节转换为KB,但在这之后你应该处于良好的状态!

#4


2  

Not sure about using filesize() for remote files, but there are good snippets on php.net though about using cURL.

不确定将文件大小()用于远程文件,但有关使用cURL的php.net上有很好的片段。

http://www.php.net/manual/en/function.filesize.php#92462

http://www.php.net/manual/en/function.filesize.php#92462

#5


1  

Here is a good link regarding filesize()

这是关于filesize()的一个很好的链接

You cannot use filesize() to retrieve remote file information. It must first be downloaded or determined by another method

您不能使用filesize()来检索远程文件信息。必须首先下载或通过其他方法确定

Using Curl here is a good method:

在这里使用Curl是一个很好的方法:

Tutorial

教程

#6


1  

You can use also this function

您也可以使用此功能

<?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;
}
?>

#7


0  

You can get the file size by using the get_headers() function. Use below code:

您可以使用get_headers()函数获取文件大小。使用以下代码:

    $image = get_headers($url, 1);
    $bytes = $image["Content-Length"];
    $mb = $bytes/(1024 * 1024);
    echo number_format($mb,2) . " MB";

#1


18  

Short of doing a complete HTTP request, there is no easy way:

没有完成一个完整的HTTP请求,没有简单的方法:

$img = get_headers("http://static.adzerk.net/Advertisers/2564.jpg", 1);
print $img["Content-Length"];

You can likely utilize cURL however to send a lighter HEAD request instead.

但是,您可以使用cURL来发送更轻的HEAD请求。

#2


5  

<?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


3  

That sounds like a permissions issue because filesize() should work just fine.

这听起来像是权限问题,因为filesize()应该可以正常工作。

Here is an example:

这是一个例子:

php > echo filesize("./9832712.jpg");
1433719

Make sure the permissions are set correctly on the image and that the path is also correct. You will need to apply some math to convert from bytes to KB but after doing that you should be in good shape!

确保在图像上正确设置权限,并且路径也正确。你需要应用一些数学来从字节转换为KB,但在这之后你应该处于良好的状态!

#4


2  

Not sure about using filesize() for remote files, but there are good snippets on php.net though about using cURL.

不确定将文件大小()用于远程文件,但有关使用cURL的php.net上有很好的片段。

http://www.php.net/manual/en/function.filesize.php#92462

http://www.php.net/manual/en/function.filesize.php#92462

#5


1  

Here is a good link regarding filesize()

这是关于filesize()的一个很好的链接

You cannot use filesize() to retrieve remote file information. It must first be downloaded or determined by another method

您不能使用filesize()来检索远程文件信息。必须首先下载或通过其他方法确定

Using Curl here is a good method:

在这里使用Curl是一个很好的方法:

Tutorial

教程

#6


1  

You can use also this function

您也可以使用此功能

<?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;
}
?>

#7


0  

You can get the file size by using the get_headers() function. Use below code:

您可以使用get_headers()函数获取文件大小。使用以下代码:

    $image = get_headers($url, 1);
    $bytes = $image["Content-Length"];
    $mb = $bytes/(1024 * 1024);
    echo number_format($mb,2) . " MB";