抓取远程图片到本地,你会用什么函数?

方式有:

<?php
function getImage($url,$filename="")
{

    if ($url == "") return false;
    if ($filename === "") {
        $ext_name = strrchr($url,'.'); //获取图片的扩展名
        if (!in_array($ext_name, ['.gif', '.jpg', '.bmp', '.png'])) {
            return false;
        }
        $filename = time() . $ext_name;

    }
    // 开始捕获
    // 文件 保存路径
    ob_start();
    /*
     * ob_start()在服务器打开一个缓冲区来保存所有的输出。
     * 所以在任何时候使用echo ,输出都将被加入缓冲区中,
     * 直到程序运行结束或者使用ob_flush()来结束。
     * 然后在服务器中缓冲区的内容才会发送到浏览器,由浏览器来解析显示。
     *
     * 使用ob_start()把输出那同输出到缓冲区,而不是到浏览器。
     */
    readfile($url);
    /*
     * readfile() 函数输出一个文件。
     *该函数读入一个文件并写入到输出缓冲。
     */
    $img_date = ob_get_contents();
    /*
     * 然后用ob_get_contents得到缓冲区的数据。
     */
    ob_end_clean();
    /*
     * 函数ob_end_clean 会清除缓冲区的内容,并将缓冲区关闭,但不会输出内容。
     */
    $size = strlen($img_date);
    //文件大小
    $local_file = fopen($filename, 'a');
    fwrite($local_file, $img_date);
    fclose($local_file);
    return $filename;
}

echo getImage("http://www.mysqltutorial.org/wp-content/uploads/2008/05/mysqltutorial.gif");

另外还有:

<?php

$img = file_get_contents('http://www.mysqltutorial.org/wp-content/uploads/2008/05/mysqltutorial.gif');

file_put_contents('a.gif', $img);

echo '<img src="a.gif">';

这段抓取远程图片至本地在运行中360极速、火狐、谷歌、猎豹没有出现错误,可以正常运行。

还有:

<?php

$img = file_get_contents('http://www.mysqltutorial.org/wp-content/uploads/2008/05/mysqltutorial.gif');

echo $img;

该段代码在360极速浏览器中运行没有出现错误,但是在火狐、谷歌、猎豹浏览器中出现了“乱码”。

转载于:https://blog.51cto.com/laok8/2359208

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值