最近在工作中需要开发了一个用户素材功能,里面需要将网上的各种图片素材进行本地化存储。于是在网上找了一些相关资料,并根据自身开发需要,整理了一下主要的逻辑代码。

/**

* PHP将网页上的图片攫取到本地存储

* @param $imgUrl  图片url地址

* @param string $saveDir 本地存储路径 默认存储在当前路径

* @param null $fileName 图片存储到本地的文件名

* @return mix

*/

function crabImage($imgUrl, $saveDir='./', $fileName=null){

      if(empty($imgUrl)){

            return false;

      }

      //获取图片信息大小

      $imgSize = getImageSize($imgUrl);

      if(!in_array($imgSize['mime'],array('image/jpg', 'image/gif', 'image/png', 'image/jpeg'),true)){

            return false;

      }

      //获取后缀名

      $_mime = explode('/', $imgSize['mime']);

      $_ext = '.'.end($_mime);

      if(empty($fileName)){  //生成唯一的文件名

            $fileName = uniqid(time(),true).$_ext;

      }

      //开始攫取

      ob_start();

      readfile($imgUrl);

      $imgInfo = ob_get_contents();

      ob_end_clean();

      if(!file_exists($saveDir)){

            mkdir($saveDir,0777,true);

      }

      $fp = fopen($saveDir.$fileName, 'a');

      $imgLen = strlen($imgInfo);    //计算图片源码大小

      $_inx = 1024;   //每次写入1k

      $_time = ceil($imgLen/$_inx);

      for($i=0; $i<$_time; $i++){

            fwrite($fp,substr($imgInfo, $i*$_inx, $_inx));

      }

      fclose($fp);

      //返回结果

      return substr($saveDir.$fileName,1);

}

--------------------------------------------把信息保存在txt文本中-------------------------------------------------------------------


fputs(fopen('name'.date('Ymdhis').'.txt','a+'),$v['nickname'].PHP_EOL);
 

------------------------------------连接其他数据库---------------------------------------------------------------------------------------------

            $Db = Db::connect([
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => 'xx.xx.xx.213',
// 数据库名
'database' => 'xiaocxxu_xxt',
// 数据库用户名
'username' => 'xiaxxxxnxx_txxt',
// 数据库密码
'password' => 'JRLDxxxxxxdbFc',
'hostport' => '',
// 连接dsn
'dsn' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'xcf_',
// 数据库调试模式 ]);
$start_time = time(); $res = $Db->table('xcf_users')->select();

PHP抓取远程图片到本地保存(如何把错误信息用text文件写入)的更多相关文章

  1. PHP抓取远程图片教程(包含不带后缀图片)

    之前做微信登录开发时候,发现微信头像图片没有后缀名,传统的图片抓取方式不奏效,需要特殊的抓取处理.所以,后来将各种情况结合起来,封装成一个类,分享出来. 创建项目 作为演示,我们在www根目录创建项目 ...

  2. 百度UEditor编辑器关闭抓取远程图片功能(默认开启)

    这个坑娘的功能,开始时居然不知道如何触发,以为有个按钮,点击一下触发,翻阅了文档,没有发现,然后再网络上看到原来是复制粘贴非白名单内的图片到编辑框时触发,坑娘啊............... 问题又来 ...

  3. 【aspnetcore】抓取远程图片

    找到要抓取的图片地址:http://i.imgur.com/8S7OaEB.jpg 抓取的步骤: 请求图片路径 获取返回的数据 将数据转换为stream 将stream转换为Image 保存Image ...

  4. ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片

    以下介绍两种方法:1.利用WebRequest,WebResponse 类 WebRequest wreq=WebRequest.Create("http://www.xueit.com/e ...

  5. 用ASP.NET实现下载远程图片保存到本地的方法 保存抓取远程图片的方法

    以下介绍两种方法:1.利用WebRequest,WebResponse 类WebRequest wreq=WebRequest.Create("http://files.jb51.net/f ...

  6. xheditor编辑器上传截图图片抓取远程图片代码

    xheditor是一款很不错的开源编辑器,用起来很方便也很强大. 分享一个xheditor直接上传截图的问题解决方法. 第一步.设置参数 localUrlTest:/^https?:\/\/[^\/] ...

  7. 下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片 将图片的二进制字节字符串在HTML页面以图片形式输出 asp.net 文件 操作方法

    下载远程(第三方服务器)文件.图片,保存到本地(服务器)的方法.保存抓取远程文件.图片   将一台服务器的文件.图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 ...

  8. php远程抓取网站图片并保存

    以前看到网上别人说写程序抓取网页图片的,感觉挺神奇,心想什么时候我自己也写一个抓取图片的方法! 刚好这两天没什么事,就参考了网上一个php抓取图片代码,重点借鉴了 匹配img标签和其src属性正则的写 ...

  9. Python3简单爬虫抓取网页图片

    现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2), 所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到 ...

随机推荐

  1. socket选项总结(setsockopt)

    功能描述:        获取或者设置与某个套接字关联的选 项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层.当操作套接字选项时,选项位于的层和选项的名称必须给出.为了操作套接字层的选项, ...

  2. 推荐使用MarkdownPad2进行Markdown写作

    笔者更推荐使用notepad++写markdown Atom也有Bug,还是Visual Studio Code好用. 去官网下载MarkdownPad2的安装包,并安装之. 如果你是Windows ...

  3. Java中的基本类型和包装类型区别

    首先看一下几个测试题,验证一下java中对基本类型和包装类型的理解,看看最后输出的答案对不对,答案在这篇博客中哦: // 第一题: 基本类型和包装类型 int a = 100; Integer b = ...

  4. Git003--创建版本库

    Git--创建版本库 本文来自于:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 ...

  5. CSS实现背景图片屏幕自适应

    在做登陆页面等的首页的时候,经常会遇到需要放一张背景大图的情况,并且需要图片按比例缩放,来适应不同屏幕的大小. html代码如下: <!DOCTYPE html> <html lan ...

  6. input限制小数点的位数

    在做限制input小数点的时候,我本来想通过vue里面的的watch监听来实现, ---实现逻辑是,通过监听输入的内容,当出现"."(点)的时候,记录通过indexOf获取点的位置 ...

  7. 2019Android阿里&腾讯&百度&字节面试汇总(附面试题总结、Android书单)

    1.基本情况 先简单说说我今年的面试经历吧,本人2018届211软件工程硕士生,Android开发岗.此文主要是2019年年初春招的面试和秋招面试经验汇总,最终拿到了阿里,腾讯,字节跳动,百度等off ...

  8. [暑假集训Day4T1]羊圈

    ZYC同志开农场了????? 二分答案. 对于每一个二分出来的答案对其进行检查(check),检查是否有一个长度大于m的字段和的平均值大于mid.方法如下:先把原数组的每一个元素减去mid,储存进一个 ...

  9. 那些年很脑残的bugs

    1.老师给了前端界面,我们用java写后台. 我改了表单form的action属性,让它跳到自己写的servlet上面去.自己在servlet里面对数据库一顿操作猛如虎,然后让servlet跳回原来页 ...

  10. Java集合、IO流、线程知识

    一.集合: 1. 集合框架: 1)Collection (1)List:有序的,有索引,元素可重复. (add(index, element).add(index, Collection).remov ...