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); 
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM