php抓取网页所有图片(如何利用ThinkPHP来实现所有图片加上水印的图片水印? )

优采云 发布时间: 2022-03-13 14:16

  php抓取网页所有图片(如何利用ThinkPHP来实现所有图片加上水印的图片水印?

)

  在做网站的时候,需要在文章中的所有图片上加上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);

}

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线