概述php下载网络图片常用的三个方法总结 下面来讲利用PHP下载网络图片常用的三个方法。当然,这三个方法都不是万能的,有时候会因为网络问题,或者网络图片的权限问题(大站一般都有防盗链)导致下载失败。
一起来看看吧,实际工作中经常用到。
方法一
优点:简单。
缺点:效率相对较低。
该方法主要用到的函数有两个file_get_contents
以及file_put_contents
这种方法非常简单,通俗的讲就是先get到图片内容,然后put到文件中。
代码如下:
<?PHP$imgfile = 'http://***.***.***/Uploads/20200424/1587710975CZlGeB.jpg';// 获取文件名$imgname = trim(strrchr($imgfile, '/'), '/');file_put_contents($imgname, file_get_contents($imgfile));
方法二
个人用的最多的方法。
缺点:稍微复杂点,要掌握curl
的用法,需要知道curl一些选项的含义。
优点:效率高,很容易支持https;
curl非常强大,也是PHPer必须掌握的技能,所以建议大家使用该方法。该方法的思路是,使用curl工具获取远程图片的信息,然后将该信息保存到本地的文件中。这里我没有对curl_exec
的结果做校验了,偷个懒。
关于curl的用法,如果有想深入了解的,可以在内存溢出网中搜索curl。
$imgfile = 'https://***.***.***/uploads/20200121/bd873d80da430f8b74ef1ee751945595.png';function down_img($imgurl){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $imgurl); // 请求地址 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 不直接输出信息 // 可以访问https请求 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 执行curl并获取数据 $results = curl_exec($ch); $imgname = trim(strrchr($imgurl, '/'), '/'); $fp = fopen($imgname, 'w'); fwrite($fp, $results); // 执行完毕后,记得关闭资源 curl_close($ch);}down_img($imgfile);
方法三
这种方法也很简单,用到的是PHP的文件管理知识。首先创建两个文件句柄,一个用于读取远程图片的二进制信息,另一个用于保存图片信息的。
<?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下载网络图片常用的三个方法总结所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容