• 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 ThinkImage(); 
                $image->open($value)->text('pengjun','./Public/consola.ttf',20,'#000000',ThinkImage::IMAGE_WATER_SOUTHEAST)->save($value); 
            }
    //php二维数组的遍历,利用两个foreach()遍历即可
            $picArr2 = my_scandir('./Public/pluginskindeditorattachedimage');
            dump($picArr2);
            foreach ($picArr2 as $key => $value1) {
                foreach ($value1 as $key2 => $value2) {
                    $image = new ThinkImage(); 
                    $image->open($value2)->text('pengjun','./Public/consola.ttf',20,'#000000',ThinkImage::IMAGE_WATER_SOUTHEAST)->save($value2); 
                }
            }
  • 相关阅读:
    Java代理模式精讲之静态代理,动态代理,CGLib代理
    Java文件编译与反编译:javac命令和javap命令
    CAS机制总结
    try-catch-finally 与返回值的修改
    不同分布式锁的实现
    缓存算法(页面置换算法)-FIFO、LFU、LRU
    多线程的线程开销
    谈谈如何来查看GC日志
    JVM中常见的垃圾收集器
    前端大牛 博客集
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/5788902.html
Copyright © 2020-2023  润新知