专栏首页木头编程 - moTzxxPHP 获取网络图片资源并保存

PHP 获取网络图片资源并保存

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/82893958

☹ 背景:

  • 在进行后台图片资源整合时,我发现有需要获取网络图片的需要,简单的要求就是,先获取某个资源图片,然后由代 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 '找不到图片文件';
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微信小程序 rich-text 富文本的解析显示

    泥豆芽儿 MT
  • PHP 学习筆記[2] —— 自学PHP 笔记整理

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

    泥豆芽儿 MT
  • 跨域解决方案整理笔记

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

    泥豆芽儿 MT
  • 微信JSSDK接入Java版--步骤及问题处理和解决

    微信JSSDKJava版接入--步骤及问题处理和解决 可以关注测试微信号,查看效果  服务器是个人的。请不要恶意攻击。 JSSDK使用步骤 http://mp...

    小帅丶
  • 【专业领域】你所不知道的html5与html中的那些事(五)——web图像

    文章简介: 现在的页面,一般都离不开图像,而怎么做才能让我们的页面中的图像加载的又快又好呢?在优化页面速度的时候还有什么事是你所不知道的呢? 下面看看...

    程序员互动联盟
  • Glide优化

    几乎所有的 OOM 错误都是因为宿主应用出了问题,而不是 Glide 本身。 应用里两种常见的 OOM 错误分别是: 过大的内存分配 (Excessively...

    六月的雨
  • 根据后台返回的UIButton title动态改变UIButton宽度

    developerbfl
  • 【Rust日报】 2020-05-14 Deno 1.0 发布

    deno.land 中的有很大一部分核心代码是使用 Rust 实现的,现在 deno 已经正式发布 1.0 版本啦 ???

    MikeLoveRust
  • 【python】利用requests爬取百度贴吧用户信息

    本次爬取利用了requests包去请求,bs4去解析页面,同时用了云mongodb,利用pymongdb去链接

    会呼吸的Coder
  • 三分钟深入TT猫之故障转移

    结束了一周繁忙的工作,趁着周末,小编手中的键盘早已饥渴难耐了,想知道上期省略号中发生了什么有趣的故事么?且听小编娓娓道来,结尾有彩蛋。 ? 风月前场 春风再续,...

    小柒2012

扫码关注云+社区

领取腾讯云代金券