最新公告
  • 欢迎您光临站长源码网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • php远程图片大小怎么找

    正文概述 管理员   2024-08-23   58

    在PHP中,获取远程图片的大小可以通过curl或file_get_contents函数进行。下面分别介绍这两种方法。

    1. 使用curl获取图片大小

    通过curl获取远程图片大小的方法如下:

    ```php

    function getRemoteImageSize($url) {

    $ch = curl_init($url);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

    curl_setopt($ch, CURLOPT_HEADER, 1);

    curl_setopt($ch, CURLOPT_NOBODY, 1);

    $data = curl_exec($ch);

    $headers = explode("\n", $data);

    foreach ($headers as $header) {

    if (strpos($header, 'Content-Length:') === 0) {

    return (int) trim(substr($header, 16));

    }

    }

    return false;

    }

    这个方法首先使用curl_init()函数初始化一个curl会话,然后设置一些选项。这里我们设置了CURLOPT_RETURNTRANSFER为1,表示返回字符串而不是直接输出;CURLOPT_FOLLOWLOCATION为1,表示遇到重定向时自动跟随;CURLOPT_HEADER和CURLOPT_NOBODY都为1,表示只获取头部信息而不获取实际内容。然后使用curl_exec()函数执行curl会话,并获取返回的数据。我们再将头部信息以换行符为分隔符拆分成数组,然后遍历这个数组,查找Content-Length头部信息,如果找到了,即可取得图片大小。

    2. 使用file_get_contents获取图片大小

    通过file_get_contents获取远程图片大小的方法如下:

    ```php

    function getRemoteImageSize($url) {

    $data = file_get_contents($url, false, stream_context_create([

    'http' => [

    'method' => 'HEAD'

    ]

    ]));

    foreach ($http_response_header as $header) {

    if (strpos($header, 'Content-Length:') === 0) {

    return (int) trim(substr($header, 16));

    }

    }

    return false;

    }

    这个方法使用了file_get_contents函数从远程获取文件头信息。我们需要额外传递一个stream参数,其中http只是其中一种上下文类型,我们设置了method为HEAD,表示只获取头部信息而不获取实际内容。最后,我们遍历http_response_header数组,查找Content-Length头部信息,如果找到了,即可取得图片大小。

    总结:

    以上两种方法都可以用来获取远程图片大小。curl方法更加灵活,可以在请求中设置更多的选项;而file_get_contents方法则更加简单易用,适用于简单需求。需要注意的是,这两者都有一定的性能消耗,不建议经常获取图片大小。

    在PHP中,可以使用 curl库 或者 file_get_contents函数获取远程图片的大小。

    使用 curl库获取远程图片大小:

    首先,需要使用curl_init()函数初始化一个curl会话,然后设置curl选项,最后使用curl_exec()函数执行curl操作,获取远程图片的大小。

    ```php

    $img_url = 'https://example.com/image.jpg';

    $ch = curl_init($img_url);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_NOBODY, true);

    curl_setopt($ch, CURLOPT_HEADER, true);

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

    curl_setopt($ch, CURLOPT_MAXREDIRS, 3);

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    $response = curl_exec($ch);

    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    $content_length = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);

    curl_close($ch);

    if ($http_code == 200) {

    echo "Image size is: " . $content_length . " bytes.";

    } else {

    echo "Failed to get image size.";

    }

    使用 file_get_contents函数获取远程图片大小:

    可以使用file_get_contents函数获取远程图片的内容,并检查HTTP响应头来获取远程图片的大小。

    ```php

    $img_url = 'https://example.com/image.jpg';

    $options = array(

    'http' => array(

    'method' => "HEAD",

    'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0\r\n" .

    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" .

    "Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3\r\n",

    'follow_location' => 1,

    'max_redirects' => 20,

    'ignore_errors' => true,

    'timeout' => 10,

    ),

    );

    $context = stream_context_create($options);

    $header = @get_headers($img_url, 1, $context);

    if ($header) {

    $filesize = $header['Content-Length'];

    echo "Image size is: " . $filesize . " bytes.";

    } else {

    echo "Failed to get image size.";

    }

    需要注意的是获取远程图片大小时,有些服务器可能不支持 HEAD 请求方法,这种情况下需要使用 GET 方法。


    站长源码网 » php远程图片大小怎么找

    发表评论

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    支付宝支付
    微信支付
    余额支付
    ×
    微信扫码支付 0 元