☹ 背景:

  • 在进行后台图片资源整合时,我发现有需要获取网络图片的需要,简单的要求就是,先获取某个资源图片,然后由代 PHP 代码实现剪切水印等操作,最后进行上传服务器…

☺.框架 : ThinkPHP3.2.3 (越来越不想玩这个低版本了)

☺ 探索:

  • 首先,我所做提供的代码也是从道友们那里获得的,然后经过测试并完善备注,希望能对小白们有所帮助
  • 再者,个人发现,没有设置过防盗链的图片资源是可以获取的,要保证你的图片资源服务器是可以访问哦
  • 并且,测试发现,如果报错的图片重名,不生效,建议使用随机码或时间戳命名

☹ 源代码:

  • 具体参数解释及使用方法请看代码备注:
/*** TODO PHP 从网络上获取图片 并保存* @param $imgFromUrl 图片的网络路径,支持本地。但是图片限制盗链的可能不行*                    本地举例:'Public/images/from.png'*                    网络图片示例:'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1538199326261&di=1e0eec15686209c2d456d554690327c1&imgtype=0&src=http%3A%2F%2Fimg5.duitang.com%2Fuploads%2Fitem%2F201410%2F13%2F20141013110308_QtVC8.thumb.700_0.jpeg'* @param $newFileName 此为重命名并进行保存的图片地址* @return bool|string 如果$filename不为空,方可进行下载并返回新图片地址** 使用 举例:*      $img = saveImageFromHttp('Public/images/from.png',"Public/images/save".time().".png");*      echo $img;*/
function saveImageFromHttp($imgFromUrl,$newFileName) {//如果$imgFromUrl地址为空,直接退出即可if ($imgFromUrl == "") {return false;}//如果没有指定新的文件名if ($newFileName == "") {//得到 $imgFromUrl 的图片格式$ext = strrchr($imgFromUrl, ".");//如果图片格式不为.gif 或者.jpg .png,直接退出即可if ($ext != ".gif" && $ext != ".jpg" && $ext != 'png'){return false;}$newFileName = date("dMYHis") . $ext;//用天月面时分秒来命名新的文件名}ob_start();//打开输出readfile($imgFromUrl);//输出图片文件$img = ob_get_contents();//得到浏览器输出ob_end_clean();//清除输出并关闭//$size = strlen($img);//得到图片大小$fp2 = @fopen($newFileName, "a");fwrite($fp2, $img);//向当前目录写入图片文件,并重新命名fclose($fp2);return $newFileName;//返回新的文件名
}
  • 测试运行,实现效果截图:

☹ 补充:

  • 有的功能需求中,可以将图片上传后,再将原来的图片资源删掉即可,以减少资源你的浪费,可参考简单代码
/*** PHP 删除指定的图片* @param $filename 目标图片路径*/
function deleteServerImg($filename)
{if (file_exists($filename)) { //检查图片文件是否存在$result = @unlink($filename);if ($result == true) {echo '删除成功';} else {echo '无法删除';}} else {echo '找不到图片文件';}
}
  • 再提供一个代码较少的方法,获取网络图片:
/*** 该方法比较消耗服务器资源,慎用!* @param $imgFromUrl 图片资源来源 *       举例:*          'https://pic.qqtn.com/up/2018-8/2018081209093194027.jpg';*          'https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83eqXCNxwqzGzBvc7LibqmRtBqrxHdTtLpZafVsENVrHrHPyTQ9qEQe00XFlu6DFrKGFx6zZ5jIh4LdA/132'* @param $newFileUrl 新文件存放目录* @return string 返回新文件名*/
function getImgFromServer($imgFromUrl, $newFileUrl)
{$img_file = file_get_contents($imgFromUrl);$img_content = base64_encode($img_file);$type = 'jpeg';//得到图片类型 png?jpg?gif?$new_file = $newFileUrl.'/'.time().'.'.$type;if (file_put_contents($new_file, base64_decode($img_content))) {return $new_file;}else{return false;}
}

PHP 获取网络图片资源并保存相关推荐

  1. 【CentOS7配置】如何设置:启动后自动获取网络连接、配置固定IP

    自动获取网络连接 如果每次启动CentOS之后,都要手动连接网络的话,那也太麻烦了.我们通过设置,可以实现网络的自动连接.方法如下: (1)首先,点击桌面右上角,找到Wired Settings,点击 ...

  2. 在vb中使用Iphlpapi.dll获取网络信息(下)

    (转上版)http://miaozk2006.blog.163.com/blog/static/382470582011111391326440/ 5.运行时截图: 第十四节 返回本机网络接口数量 1 ...

  3. 在vb中使用Iphlpapi.dll获取网络信息(上)

    ※================================================================== ※本连载文章说明: ※1.连载首发于<软件报>(ht ...

  4. esp8266 at接收数据中断时间_利用ESP8266获取网络同步时间(北京时间)

    本文需要读者有一点ESP8266的基础知识,比如ESP8266的模式设置,AP连接,联网. 1. 提供网络时间的网站 要想获取网络时间首先要有提供网络时间的网站,免费提供网络时间的网站有很多, 这里以 ...

  5. stm32 + ESP8266 wifi获取网络时间和天气 stm32天气预报

    大家遇到什么什么题,可以私聊我. 近期由于某些原因,玩了一下stm32+WiFi获取网络天气和网络时间.之前一直觉得这个东西会有点难度,其实,做完了才发现,其实那只是想象中的难而已.现在,将这几天的成 ...

  6. 如何获取网络协议的协议号

    如何获取网络协议的协议号 网络层中的IP数据报的首部有一个协议字段.占8位.用来标识数据报中的报文使用何种协议.以便使目的主机的IP层知道应将报文数据上交给哪个处理过程.我们常用到的tcp协议的协议号 ...

  7. 51单片机利用8266获取网络时间

    51单片机利用8266获取网络时间 我现在是成都一所不出名的二本院校大三学生,第一次来到CSDN,趁有时间,把我之前做的项目,其中一个模块拿出来和大家分享,我也是小白,希望提出宝贵意见.OK,废话不多 ...

  8. 【STM32训练—WiFi模块】第一篇、STM32驱动ESP8266WiFi模块获取网络时间

    目录 第一部分.写在前面 1.硬件准备 2.相关的AT指令 3.参考博客 第二部分.电脑串口助手调试ESP8266模块获取网络时间 1.ESP8266获取时间的流程 2.具体实现步骤 第三部分.STM ...

  9. linux设置网络ip自启动,【CentOS7配置】如何设置:启动后自动获取网络连接、配置固定IP...

    自动获取网络连接 如果每次启动CentOS之后,都要手动连接网络的话,那也太麻烦了.我们通过设置,可以实现网络的自动连接.方法如下: (1)首先,点击桌面右上角,找到Wired Settings,点击 ...

最新文章

  1. 80行代码搞定某电影网站所有的下载资源
  2. python版本越高越好吗-Python 3.8 已发布,现在是切换至新版本的好时机吗?
  3. linux下rsync+inotify实现服务器之间文件实时同步
  4. SQLServer支持大内存方案(转载)
  5. String | 344. Reverse String
  6. 华为开发微信鸿蒙版,HUAWEI DevEco Studio
  7. java词汇速查手册_java 词汇表速查手册
  8. 机器人--寒暄库(4)
  9. hudi延迟日志命名
  10. flex, swf 不能访问网络/本地资源
  11. js基础 之 引用类型
  12. vSphere及云端计算的完美集成
  13. 易筋SpringBoot 2.1 | 第五篇:RestTemplate请求https(3)
  14. mysql数据库恢复
  15. 电脑怎么安装xp系统原版镜像
  16. PayPal支付集成到自己Web网站
  17. latex表格中如何画虚线
  18. UniApp已经接了手机数据线,但运行工具警告 “没有检查到设备“ (华为手机为例 进行解决)
  19. Git各种报错和解决方案(Windows用户)
  20. C/C++ 之 操作符重载

热门文章

  1. 推荐10款效率翻倍的撸码神器!
  2. 专业课c语言可以调剂吗,调剂没有想象得那么难:关于考研调剂的那些事儿
  3. koa实现下载和导出exsel表功能
  4. 搭建API集成管理平台YApi
  5. 基于JAVA乐购游戏商城系统计算机毕业设计源码+数据库+lw文档+系统+部署
  6. 司空见惯 - 好吃的姑娘
  7. 巾粉世家消毒毛巾能对美发店脏毛巾进行统一回收
  8. vba 文件操作服务器,VBA文件及文件夹操作
  9. 微信小程序选择视频,获取封面缩略图
  10. php餐厅预定座位系统,一种餐厅座位智能化预订系统的制作方法