php给图片加文字水印与图片水印代码

这款程序给图片加文字水印时是调用 了C:\\WINDOWS\\Fonts\\\\SIMHEI.TTF字体,给图片加水印时就可以自定图片,实例代码如下:

  1. $image->wprint_img();//执行图片水印
  2. $image->wprint_string();//执行文字水印
  3. class editimage{
  4. private $imagefile;//图片文件
  5. private $smallimg;//水印图片
  6. private $string;//水印文字
  7. private $position;//存放位置
  8. private $dst_x=600;//原始图片打水印x坐标
  9. private $dst_y=0;//原始图片打水印y坐标
  10. private $str_x=450;
  11. private $str_y=200;
  12. private $font="c:windows ontssimhei.ttf";//原始图片打水印字体路径
  13. private $imgej;// imagecolorallocate后的变量
  14. function __get($value){
  15. return $this->$value;
  16. }
  17. function __set($property,$value){
  18. $this->$property=$value;
  19. }
  20. /**
  21. * 构造函数初始化
  22. *
  23. * @param string $imagefile 被上水印的文件
  24. * @param string $smallimg 水印文件
  25. * @param string $string 水印文字
  26. * @param string $position 存放位置
  27. * @param int $dst_x 被上水印的图片x
  28. * @param int $dst_y 被上水印的图片y
  29. */
  30. function __construct($imagefile,$smallimg='',$string=''){//,$position='',$dst_x=0,$dst_y=0
  31. $this->imagefile=$imagefile;
  32. $this->smallimg=$smallimg;
  33. $this->string=$string;
  34. $this->imgej=$this->imagecreatef($this->imagefile);
  35. }
  36. function get_extname($file){//获取文件的后缀名
  37. if (file_exists($this->imagefile)) {
  38. $img=getimagesize($file);
  39. switch ($img[2]){
  40. case "1":
  41. return "gif";
  42. case "2":
  43. return "jpg";
  44. case "3":
  45. return "png";
  46. }
  47. }else{
  48. return false;
  49. }
  50. }
  51. function getsize($file,$wh){//获取图大小. $wh:w获得宽,h获得高
  52. $image=getimagesize($file);
  53. if ($wh) {
  54. switch ($wh){
  55. case "w":
  56. return $image[0];
  57. case "h":
  58. return $image[1];
  59. }
  60. }else{
  61. return false;
  62. }
  63. }
  64. function imagecreatef($file){//创建类型
  65. if ($this->get_extname($file)) {
  66. switch($this->get_extname($file)){
  67. case "gif":
  68. return imagecreatefromgif($file);
  69. case "jpg":
  70. return imagecreatefromjpeg($file);
  71. case "png":
  72. return imagecreatefrompng($file);
  73. }
  74. }else{
  75. echo "文件不存在";
  76. }
  77. }
  78. //水印图片处理
  79. function wprint_img(){
  80. if($this->smallimg){
  81. imagecopy($this->imgej,$this->imagecreatef($this->smallimg),$this->dst_x,$this->dst_y,0,0,$this->getsize($this->smallimg,"w"),$this->getsize($this->smallimg,"h"));
  82. }else{
  83. return "水印图片不存在!";
  84. }
  85. }
  86. //水印文字处理
  87. function wprint_string(){
  88. return imagettftext($this->imgej,20,0,$this->str_x,$this->str_y,imagecolorallocate($this->imgej,200,200,200),$this->font,iconv("gb2312","utf-8",$this->string));
  89. }
  90. function choose_imgouttype(){//输出
  91. if($this->position){
  92. $this->get_extname($this->imagefile);
  93. switch ($this->get_extname($this->imagefile)){
  94. case "gif":
  95. return imagegif($this->imgej,$position);
  96. case "jpg":
  97. return imagejpeg($this->imgej,$this->position);
  98. case "jpeg":
  99. return imagejpeg($this->imgej,$this->position);
  100. case "png":
  101. return imagepng($this->imgej,$position);
  102. }
  103. }else{
  104. switch ($this->get_extname($this->imagefile)){
  105. case "gif":
  106. return imagegif($this->imgej);
  107. case "jpg":
  108. return imagejpeg($this->imgej);
  109. case "jpeg":
  110. return imagejpeg($this->imgej);
  111. case "png":
  112. return imagepng($this->imgej);
  113. }
  114. }
  115. }
  116. }
  117. //使用方法如下:
  118. $image=new editimage("d90.gif","hknmtt.png","我的d90");
  119. $image->wprint_img();//执行图片水印
  120. $image->wprint_string();//执行文字水印,开源代码phpfensi.com
  121. $image->choose_imgouttype();