博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】这段时间就是想更新一下博客系统,针对博客系统中的图片上添加一下网站的域名水印,但是之前已经上传了不少的图片并没有添加水印,本文讲讲如何对文件夹下面的所有图片进行批量的添加水印。
其实二话可以不说太多,直接上源代码:
$rootdir = $_SERVER['DOCUMENT_ROOT']; // 站点根目录
$dir = $rootdir."/0001/0001/article"; // 图片所在文件夹(网站在服务器上的根目录)
$save = $rootdir."/0001/0001/article_1/"; // 保存位置
if (is_dir($dir))
{
if ($dh = opendir($dir))
{
while (($file = readdir($dh)) !== false)
{
if($file == '.' || $file == '..')
{
continue;
}
$file_path = $dir.'/'.$file;
$text = 'www.mafutian.net'; // 添加的文字
$font = 'consola.ttf'; // 字体
$save_path = $save.$file;
$image_type = exif_imagetype($file_path);
switch($image_type)
{
case '1': // IMAGETYPE_GIF
$image = imagecreatefromgif($file_path); // 由文件或者 URL 创建一个新图像
$imagecolor = imagecolorallocate($image, 255, 0, 0);
imagefttext($image,13,0,10,20,$imagecolor,$font,$text); // 使用 FreeType 2 字体将文本写入图像
imagegif($image,$save_path); // 将图片输出到浏览器中
break;
case '2': // IMAGETYPE_JPEG
$image = imagecreatefromjpeg($file_path);
$imagecolor = imagecolorallocate($image, 255, 0, 0);
imagefttext($image,13,0,10,20,$imagecolor,$font,$text);
imagejpeg($image,$save_path);
break;
case '3': // IMAGETYPE_PNG
$image = imagecreatefrompng($file_path);
$imagecolor = imagecolorallocate($image, 255, 0, 0);
imagefttext($image,13,0,10,20,$imagecolor,$font,$text);
imagepng($image,$save_path);
break;
case '17': // IMAGETYPE_ICO
break;
default:
var_dump($file);
break;
}
}
closedir($dh);
}
}
然后只要将上面的代码直接复制到 php 文件中,执行该文件就可以将相应文件夹下面的所有图片都批量的添加水印了。备注:为什么我会选择使用 exif_imagetype() 函数来判断图片类型,而不是直接使用字符串切割函数来获取图片的后缀,例如 ".jpg",'.jpeg','png' 这样的呢,那是因为很多时候 '.jpg' 文件并不是真正的 jpg 图片,有可能是我将 png 文件直接修改后缀 '.png' 为 '.jpg' 这样就会造成报错。
版权归 马富天PHP博客 所有
本文标题:《PHP 如何批量添加图片水印》
本文链接地址:http://www.mafutian.net/301.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶0
踩0
评论审核未开启 |