標籤:
在做網站的時候,需要給文章內所有的圖片添加上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); } }
php遍曆目錄輸出目錄及其下的所有圖片檔案