PHP开发的文字水印,缩略图,图片水印实现类与用法示例

这篇文章主要介绍了PHP开发的文字水印,缩略图,图片水印实现类与用法,结合完整实例形式分析了php文字水印、缩略图操作类定义与简单使用方法,需要的朋友可以参考下。

本文实例讲述了PHP开发的文字水印,缩略图,图片水印实现类与用法,分享给大家供大家参考,具体如下:

1.实现类ImageToTest.class.php参考代码

  1. class ImageToTest {
  2. /**
  3. * 图片的基本信息
  4. */
  5. private $info;
  6. private $image;
  7. public function __construct($src){
  8. $info = getimagesize($src);
  9. $this->info = array(
  10. 'width'=> $info[0],
  11. 'height'=> $info[1],
  12. 'type'=> image_type_to_extension($info[2],false),
  13. 'mime'=>$info['mime']
  14. );
  15. $fun = "imagecreatefrom{$this->info['type']}";
  16. $this->image = $fun($src);
  17. }
  18. /**
  19. * 操作图片 (压缩)
  20. */
  21. public function thumb($width,$height){
  22. $image_thumb = imagecreatetruecolor($width,$height);
  23. imagecopyresampled($image_thumb,$this->image,0,0,0,0,$width,$height,
  24. $this->info['width'],$this->info['height']);
  25. imagedestroy($this->image);
  26. $this->image = $image_thumb;
  27. }
  28. /**
  29. * 操作图片(添加文字水印)
  30. */
  31. public function fontMark($content,$font_url,$size,$color,$local,$angle){
  32. $col = imagecolorallocatealpha($this->image,$color[0],$color[1],$color[2],$color[3]);
  33. imagettftext($this->image,$size,$angle,$local['x'],$local['y'],$col,$font_url,$content);
  34. }
  35. /**
  36. * 操作图片(添加水印图片)
  37. */
  38. public function imageMark($source,$local,$alpha){
  39. //1.获取水印图片的基本信息
  40. $info2 = getimagesize($source);
  41. //2.通过水印的图片编号来获取水印的图片类型
  42. $type2 = image_type_to_extension($info2[2],false);
  43. //3.在内存中创建一个和我们的水印图像一致的图像类型
  44. $func2 = "imagecreatefrom{$type2}";
  45. //4.把水印图片复制到内存中
  46. $water = $func2($source);
  47. //5.合并图片
  48. imagecopymerge($this->image,$water,$local['x'],$local['y'],0,0,$info2[0],$info2[1],$alpha);
  49. //6.销毁水印图片
  50. imagedestroy($water);
  51. }
  52. /**
  53. * 在浏览器中输出图片
  54. */
  55. public function show(){
  56. header("Content-type:".$this->info['mime']);
  57. $funs = "image{$this->info['type']}";
  58. $funs($this->image);
  59. }
  60. /**
  61. * 把图片保存到硬盘里
  62. */
  63. public function save($newName){
  64. $funs = "image{$this->info['type']}";
  65. $funs($this->image,'./outPut/'.$newName.'.'.$this->info['type']);
  66. }
  67. /**
  68. * 销毁图片 使用析构函数
  69. */
  70. public function __destruct()
  71. {
  72. imagedestroy($this->image);
  73. }
  74. }

2.测试参考代码

  1. require_once('ImageToTest.class.php');
  2. /*$src = './image/wbg.jpg';
  3. $image = new ImageToTest($src);
  4. $image->thumb(700,550);
  5. $image->show();*/
  6. /*$src2 = './image/wbg.jpg';
  7. $content = 'SGC';
  8. $font_url = './image/YGYcuhei.ttf';
  9. $size = 33;
  10. $color = array(
  11. 0=>2,
  12. 1=>222,
  13. 2=>222,
  14. 3=>60
  15. );
  16. $local = array(
  17. 'x'=>20,
  18. 'y'=>100
  19. );
  20. $angle = 10;
  21. $image2 = new ImageToTest($src2);
  22. $image2->fontMark($content,$font_url,$size,$color,$local,$angle);
  23. $image2->show();
  24. $image2->save('hahahah');*/
  25. $src3 = './image/wbg.jpg';
  26. $source = './image/water.jpg';
  27. $local = array(
  28. 'x'=>20,
  29. 'y'=>100
  30. );
  31. $font_url = './image/YGYcuhei.ttf';
  32. $size = 38;
  33. $color = array(
  34. 0=>2,
  35. 1=>222,
  36. 2=>222,
  37. 3=>60
  38. );
  39. $alpha = 60;
  40. $angle = 50;
  41. $image3 = new ImageToTest($src3);
  42. $image3->imageMark($source,$local,$alpha);
  43. $image3->thumb(700,550);
  44. $image3->fontMark('Hello',$font_url,$size,$color,$local,$angle);
  45. $image3->show();
  46. $image3->save('WAWAWAWAWA');