PHP 如何批量添加图片水印

学习笔记 马富天 2017-08-08 10:45:28 77 0

【摘要】这段时间就是想更新一下博客系统,针对博客系统中的图片上添加一下网站的域名水印,但是之前已经上传了不少的图片并没有添加水印,本文讲讲如何对文件夹下面的所有图片进行批量的添加水印。

其实二话可以不说太多,直接上源代码:

  1. $rootdir = $_SERVER['DOCUMENT_ROOT'];	//	站点根目录
  2. $dir = $rootdir."/0001/0001/article";	//	图片所在文件夹(网站在服务器上的根目录)
  3. $save = $rootdir."/0001/0001/article_1/";	//	保存位置
  4. if (is_dir($dir)) 
  5. {
  6.     if ($dh = opendir($dir)) 
  7.     {
  8.         while (($file = readdir($dh)) !== false) 
  9.         {
  10.             if($file == '.' || $file == '..')
  11.             {
  12.             	continue;
  13.             }
  14.             	            
  15.             $file_path = $dir.'/'.$file;
  16. 			$text = 'www.mafutian.net';	//	添加的文字
  17. 			$font = 'consola.ttf';	//	字体
  18. 			$save_path = $save.$file;			
  19. 			$image_type = exif_imagetype($file_path);
  20. 			switch($image_type)
  21. 			{
  22. 				case '1':	//	IMAGETYPE_GIF
  23. 						$image = imagecreatefromgif($file_path);	//	由文件或者 URL 创建一个新图像	            		
  24. 						$imagecolor = imagecolorallocate($image, 255, 0, 0);
  25. 						imagefttext($image,13,0,10,20,$imagecolor,$font,$text);	//	使用 FreeType 2 字体将文本写入图像
  26. 						imagegif($image,$save_path);	//	将图片输出到浏览器中
  27. 					break;					
  28. 				case '2':	//	IMAGETYPE_JPEG
  29. 						$image = imagecreatefromjpeg($file_path);
  30. 						$imagecolor = imagecolorallocate($image, 255, 0, 0);
  31. 						imagefttext($image,13,0,10,20,$imagecolor,$font,$text);
  32. 						imagejpeg($image,$save_path);
  33. 					break;
  34. 				case '3':	//	IMAGETYPE_PNG
  35. 						$image = imagecreatefrompng($file_path);
  36. 						$imagecolor = imagecolorallocate($image, 255, 0, 0);
  37. 						imagefttext($image,13,0,10,20,$imagecolor,$font,$text);
  38. 						imagepng($image,$save_path);
  39. 					break;
  40. 				case '17':	//	IMAGETYPE_ICO
  41. 					break;
  42. 				default:
  43. 						var_dump($file);
  44. 					break;
  45. 			}
  46.         }
  47.         closedir($dh);
  48.     }
  49. }

然后只要将上面的代码直接复制到 php 文件中,执行该文件就可以将相应文件夹下面的所有图片都批量的添加水印了。备注:为什么我会选择使用 exif_imagetype() 函数来判断图片类型,而不是直接使用字符串切割函数来获取图片的后缀,例如 ".jpg",'.jpeg','png' 这样的呢,那是因为很多时候 '.jpg' 文件并不是真正的 jpg 图片,有可能是我将 png 文件直接修改后缀 '.png' 为 '.jpg' 这样就会造成报错。

版权归 马富天PHP博客 所有

本文标题:《PHP 如何批量添加图片水印》

本文链接地址:http://www.mafutian.net/301.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 在 PHP 中如何在网站上的图片上打上水印 》 下一篇《 PHP 处理图片时报错:Warning: imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error 》
分享到:

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码