在做网站的时候,需要给文章内所有的图片添加上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',,'#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',,'#000000',\Think\Image::IMAGE_WATER_SOUTHEAST)->save($value2);
}
}

php遍历目录输出目录及其下的所有图片文件的更多相关文章

  1. Python os模块实例之遍历目录及子目录指定扩展名的文件

    需求:在该目录下有很多子目录(如下图,截图了部分),现要从该目录和所有子目录下找到所有扩展名为.meta的文件,并获取文件中第二行guid的值(': '后面的),然后将所有guid的值输出到另一文件中 ...

  2. 【Tip】如何让引用的dll随附的xml注释文档、pdb调试库等文件不出现在项目输出目录中

    项目输出目录(bin/debug|release)中经常是这个样子: main.exemain.pdb a.dll a.xml b.dll b.pdb b.xml ... 其中xml是同名dll的注释 ...

  3. 修改XCode的Product的输出目录(有时不生效需看)

    通常在情一般都不建议使用绝对路径,因为写死之后,换环境,换平台,又要重新修改路径,因此常常使用相对路径,哪么相对路径通常使用的就是环境变量了. 在Mac 中,xcode 中build settings ...

  4. HDInsight 指定输出目录 insert overwrite

    基本语法 insert overwrite local directory '/example/demo/' select * from table; 可以格式化输出 insert overwrite ...

  5. makefile--统一目标输出目录 (六)

    原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 上一节我们把规则单独提取出来,方便了Makefile的维护,每个模块只需要给出关于自己的一些变量 ...

  6. java文件操作(输出目录、查看磁盘符)

    问题描述:     java操作文件,所有硬盘中所有文件路径 问题解决:     (1)查看所有磁盘文件 注:     如上所示,使用接口 File.listRoots()可以返回所有磁盘文件,通过f ...

  7. ASP.NET Core MVC压缩样式、脚本及总是复制文件到输出目录

    前言 在.NET Core之前对于压缩样式文件和脚本我们可能需要借助第三方工具来进行压缩,但在ASP.NET MVC Core中则无需借助第三方工具来完成,本节我们来看看ASP.NET Core MV ...

  8. webstorm配置编译sass的输出目录

    关于这个的问题,虽说不是很难,但还是踩了点小坑,下面就来介绍下如何使用webstorm配置编译sass的输出目录. 1.下载Ruby 2.使用Ruby安装sass 3.检测是否安装成功. 前面的几步很 ...

  9. VS生成项目时,有些文件无法复制到输出目录的解决办法

    有时候,我们在生成项目时,发现有些文件如:.jpg的图片文件,无法复制到输出目录中,此时会非常纠结,反复的清理项目,重新生成,依旧不能解决此问题.后来我打开.csproj的项目工程文件时,经过对比发现 ...

随机推荐

  1. linux下C++ STL hash_map的使用以及使用char *型变量作为Key值的一大“坑”

    计算机编程中经常会用到hash表,而在C++中,使用STL编程更是少不了的.本文将介绍STL中hash_map的使用.在hash_map中使用自定义类型作为key值的方法以及在使用char *类型作为 ...

  2. C++细节系列(零):零散记录

    老规矩:记录细节,等待空余,再进行整理. 1:const,static,const static成员初始化. 1.const成员:只能在构造函数后的初始化列表中初始化 2.static成员:初始化在类 ...

  3. Android TextView 字符串展示不同大小文字

    用Spannable字符串实现: String s= "Hello Everyone"; SpannableString ss1= new SpannableString(s); ...

  4. thinkphp框架开启页面gzip压缩

    Thinkphp下开启gzip压缩很简单,不管你是哪个版本,只要在你的入口文件index.PHP中加入以下两行,如果你的服务器支持,那么就OK了. define ( "GZIP_ENABLE ...

  5. ui原则

    http://www.niushe.com/news/show-3683.html 设计师Joshua Porter发表了一篇文章——<Principles of User Interface ...

  6. haproxy path_end不能忽略

    C:\>ping www.zjtest7.com 正在 Ping www.zjtest7.com [192.168.32.82] 具有 32 字节的数据: 来自 192.168.32.82 的回 ...

  7. Embedded software develop step

    x86 –>embeded so you you  must familiar with x86 first-

  8. 关于URL编码的问题

    在进行WEB开发时,字符集编码常常困扰着我们.我们需要区分两种情况,一是URL编码,二是HTTP Body编码.这两种编码所处理的机制不同. URL编码和解码 客户端负责对URL编码,服务端负责解码. ...

  9. 杭电oj 1328

    Tips:本题中没有任何难度,直接按普通逻辑进行计算即可. #include<stdio.h> #include<string.h> ]={'A','B','C','D','E ...

  10. poj 1664 放苹果_整数拆分

    题意:略 用手机敲的代码真是泪流满面,终于过了 #include<iostream> using namespace std; int dp[110][110]; void solve() ...