php遍历目录输出目录及其下的所有图片文件

在做网站的时候,需要给文章内所有的图片添加上logo,如何利用ThinkPHP来实现。

ThinkPHP为我们很好的提供了图像处理类,给文章中的所有图片加上水印的思路,上传的图片文件都保存在一个文件夹下面,我只需要获取该文件夹以及子文件夹下面的所有图片,遍历一次,加上水印即可,因此目前的难度只是怎么获取文件中的图片,并且遍历一次即可。[在ImagesController控制器中具体会出现二维数组的遍历];因此添加水印的图片问题就转换成了利用PHP遍历目录输出目录及其下的所有图片文件

//遍历目录输出目录及其下的所有文件 利用函数的递归解决
function my_scandir($dir){  
    $files=array();  
    if(is_dir($dir)){  
        if($handle=opendir($dir)){  
            while(($file=readdir($handle))!==false){  
                if($file!='.' && $file!=".."){  
                    if(is_dir($dir."/".$file)){  
                        $files[$file]=my_scandir($dir."/".$file);  
                    }else{  
                        $files[]=$dir."/".$file;  //获取文件的完全路径
                        $filesnames[]=$file;      //获取文件的文件名称
                    }  
                }  
            }  
        }  
    }  
    closedir($handle);  
    return $files; 
    //return $filesnames; 
}

接下来便是处理图片水印的问题了,

//对于一维数组的遍历
        $picArr = my_scandir('./Public/Uploads/txtPig');//返回的是数组格式的数据
        dump($picArr);
        foreach ($picArr as $value) {
            $image = new \Think\Image(); 
            $image->open($value)->text('pengjun','./Public/consola.ttf',20,'#000000',\Think\Image::IMAGE_WATER_SOUTHEAST)->save($value); 
        }
//php二维数组的遍历,利用两个foreach()遍历即可
        $picArr2 = my_scandir('./Public/plugins\kindeditor\attached\image');
        dump($picArr2);
        foreach ($picArr2 as $key => $value1) {
            foreach ($value1 as $key2 => $value2) {
                $image = new \Think\Image(); 
                $image->open($value2)->text('pengjun','./Public/consola.ttf',20,'#000000',\Think\Image::IMAGE_WATER_SOUTHEAST)->save($value2); 
            }
        }

 

转载于:https://www.cnblogs.com/xs-yqz/p/5788902.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值