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