抓捕远程图片到本地

<?php 
$img = file_get_contents('http://www.xfcodes.com/ img/baidu_logo.gif'); 
file_put_contents('1.gif',$img); 
echo '<img src="1.gif">'; 

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

另外还有:

<?php
$pagecontent = file_get_contents('http://www.w3cschool.cn/attachments/day_170216/201702162023331045.png');
echo $pagecontent;
?>

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

复制代码
<?php
function getImage($url,$filename=""){

    if($url == "") return false;
    if($filename===""){
        $ext_name=strrchr($url,'.') //获取图片的扩展名
        if($ext_name!='.gif'&& $ext_name!='.jpg' && $ext_name!='.bmp' && $ext_name!='.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;
}

猜你喜欢

转载自blog.csdn.net/sinat_37825550/article/details/78708581