+ -
当前位置:首页 → 问答吧 → php为图片加水印logo

php为图片加水印logo

时间:2011-10-03

来源:互联网

总是想多掌握些php的功能,对采集模拟请求 图片处理 字符串处理等很感兴趣,于是慢慢的在网上找例子,看函数,查找用法,今天写了个图片加水印图的函数,写的简陋,大家多指点


大图:http://pic8.nipic.com/20100630/2723613_152020829187_2.jpg
水印图:http://cn.php.net/images/php.gif  ,php logo

代码:

  1. <?php
  2. /*
  3. 函数说明:功能--------返回图片标识符
  4. 参数:$src---图片地址
  5. */
  6. function getimg($src){
  7. //图片相关信息数组
  8. $arr=@getimagesize($src);
  9. switch($arr[2]){
  10. case 1:$img=imagecreatefromgif($src);break;
  11. case 2:$img=imagecreatefromjpeg($src);break;
  12. case 3:$img=imagecreatefrompng($src);break;
  13. default:return false;
  14. }
  15. return $img;
  16. }


  17. /*
  18. waterpic($src1,$src2,$position=1)函数说明:功能--------加水印图片
  19. 参数:$src1------大图地址,$src2-----水印图片地址 ,$position------水印位置(默认1,左上1,左下2,右上3,右下4)
  20. 返回值:根据返回值1,2,3,0,输出相应的错误提示,返回0--正确 1---大图地址错误,2---水印图地址错误,3-水印图过大
  21. */
  22. function waterpic($src1,$src2,$position=1){
  23. //获得1 2图片的标识符
  24. $img1=getimg($src1);
  25. $arr1=@getimagesize($src1);
  26. if(!$arr1)return 1;
  27. list($k1,$g1)=$arr1;
  28. //图片2
  29. $img2=getimg($src2);
  30. $arr2=@getimagesize($src2);
  31. if(!$arr2)return 2;
  32. list($k2,$g2)=$arr2;
  33. //图片加水印,把小图加到大图上面
  34. //水印加的位置:左上1,左下2,右上3,右下4
  35. if($k1>=$k2&&$g1>=$g2){
  36. //可以加水印图,设置图片位置
  37. switch($position){
  38. case 1:$x=0;$y=0;break;
  39. case 2:$x=0;$y=$g1-$g2;break;
  40. case 3:$x=$k1-$k2;$y=0;break;
  41. case 4:$x=$k1-$k2;$y=$g1-$g2;break;
  42. default:$x=0;$y=0;
  43. }//end switch($position)
  44. //开始加水印
  45. imagecopy($img1,$img2,$x,$y,0,0,$k2,$g2);
  46. //根据图片类型设置输出
  47. switch($arr1[2]){
  48. case 1:header('content-type:image/gif');imagegif($img1,false,100);break;
  49. case 2:header('content-type:image/jpeg');imagejpeg($img1,false,100);break;
  50. case 3:header('content-type:image/png');imagepng($img1,false,100);break;
  51. }
  52. return 0;
  53. }//end if($k1>=$k2&&$g1>=$g2)
  54. else{
  55. //echo '水印图片过大';
  56. return 3;
  57. }
  58. }//end function waterpic($src1,$src2,$position=1)



  59. //下面是具体的加水印图的测试
  60. $position=3;//水印加的位置:左上1,左下2,右上3,右下4
  61. $src1='http://pic8.nipic.com/20100630/2723613_152020829187_2.jpg';//大图

  62. $src2='http://cn.php.net/images/php.gif';//水印图片
  63. $return=waterpic($src1,$src2,$position);//加水印图,根据返回值判断是否成功,失败,给予相应的错误原因
  64. if($return==1)echo '第1张图片获取失败';
  65. if($return==2)echo '第2张图片获取失败';
  66. if($return==3)echo '水印图片过大,确保水印图片宽高小于大图';

  67. ?>
复制代码

作者: 阿修罗   发布时间: 2011-10-03

谢谢分享

作者: tangxuewu   发布时间: 2011-10-03