php下载网络图片常用的三个方法总结

齐天大圣
发布: 2020-05-03 09:11:33
原创
3088人浏览过

下面来讲利用php下载网络图片常用的三个方法。当然,这三个方法都不是万能的,有时候会因为网络问题,或者网络图片的权限问题(大站一般都有防盗链)导致下载失败。

一起来看看吧,实际工作中经常用到。

方法一

优点:简单。

缺点:效率相对较低。

该方法主要用到的函数有两个file_get_contents以及file_put_contents这种方法非常简单,通俗的讲就是先get到图片内容,然后put到文件中。

立即学习PHP免费学习笔记(深入)”;

代码如下:

<?php
$imgFile = 'http://***.***.***/Uploads/20200424/1587710975CZlGeB.jpg';
// 获取文件名
$imgName = trim(strrchr($imgFile, '/'), '/');
file_put_contents($imgName, file_get_contents($imgFile));
登录后复制

方法二

个人用的最多的方法。

BibiGPT-哔哔终结者
BibiGPT-哔哔终结者

B站视频总结器-一键总结 音视频内容

BibiGPT-哔哔终结者 28
查看详情 BibiGPT-哔哔终结者

缺点:稍微复杂点,要掌握curl的用法,需要知道curl一些选项的含义。

优点:效率高,很容易支持https;

curl非常强大,也是phper必须掌握的技能,所以建议大家使用该方法。该方法的思路是,使用curl工具获取远程图片的信息,然后将该信息保存到本地的文件中。这里我没有对curl_exec的结果做校验了,偷个懒。

关于curl的用法,如果有想深入了解的,可以在php中文网中搜索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中文网其它相关文章!

相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号