下面来讲利用PHP下载网络图片常用的三个方法。当然,这三个方法都不是万能的,有时候会因为网络问题,或者网络图片的权限问题(大站一般都有防盗链)导致下载失败。
一起来看看吧,实际工作中经常用到。
方法一
优点:简单。
缺点:效率相对较低。
该方法主要用到的函数有两个file_get_contents
以及file_put_contents
这种方法非常简单,通俗的讲就是先get到图片内容,然后put到文件中。
代码如下:
1 2 3 4 5 | <?php
$imgFile = 'http:
$imgName = trim( strrchr ( $imgFile , '/'), '/');
file_put_contents ( $imgName , file_get_contents ( $imgFile ));
|
登录后复制
方法二
个人用的最多的方法。
缺点:稍微复杂点,要掌握curl
的用法,需要知道curl一些选项的含义。
优点:效率高,很容易支持https;
curl非常强大,也是phper必须掌握的技能,所以建议大家使用该方法。该方法的思路是,使用curl工具获取远程图片的信息,然后将该信息保存到本地的文件中。这里我没有对curl_exec
的结果做校验了,偷个懒。
关于curl的用法,如果有想深入了解的,可以在php中文网中搜索curl。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $imgFile = 'https:
function down_img( $imgUrl )
{
$ch = curl_init();
curl_setopt( $ch , CURLOPT_URL, $imgUrl );
curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, 0);
$results = curl_exec( $ch );
$imgName = trim( strrchr ( $imgUrl , '/'), '/');
$fp = fopen ( $imgName , 'w');
fwrite( $fp , $results );
curl_close( $ch );
}
down_img( $imgFile );
|
登录后复制
方法三
这种方法也很简单,用到的是php的文件管理知识。首先创建两个文件句柄,一个用于读取远程图片的二进制信息,另一个用于保存图片信息的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php
$imgFile = '
$imgName = trim( strrchr ( $imgFile , '/'), '/');
$source = fopen ( $imgFile , 'rb');
$down = fopen ( $imgName , 'wb');
while ( $chunk = fread ( $source ,1024)){
fwrite( $down , $chunk , 1024);
}
fclose( $source );
fclose( $down );
|
登录后复制
总结
个人工作中主要用到了下列的第一种及第二种方法。另外多说一句,图片下载倒没什么关系,但是下载的图片怎么用就要注意了。用的不好,就可能产生侵权问题了哦。
以上是php下载网络图片常用的三个方法总结的详细内容。更多信息请关注PHP中文网其他相关文章!