方式有:php
<?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");
另外还有:mysql
<?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极速、火狐、谷歌、猎豹没有出现错误,能够正常运行。sql
还有:浏览器
<?php $img = file_get_contents('http://www.mysqltutorial.org/wp-content/uploads/2008/05/mysqltutorial.gif'); echo $img;
该段代码在360极速浏览器中运行没有出现错误,可是在火狐、谷歌、猎豹浏览器中出现了“乱码”。服务器