• 技术文章 >php教程 >php手册

    php图片加水印类

    2016-06-06 19:33:35原创885

    自己写的一个图片加水印类,暂时只支持水印图片,水印文字的还没有完善 代码不是很完善,欢迎大家交流指正! 调用方式: 先包含类文件 然后实例化类: $img = new Images; 然后提供图片: $img-imgpath(原图片路径及名称,水印图片路径及名称); 之后开始加水

    自己写的一个图片加水印类,暂时只支持水印图片,水印文字的还没有完善
    代码不是很完善,欢迎大家交流指正!
    调用方式:
    先包含类文件
    然后实例化类:
    $img = new Images;
    然后提供图片:
    $img->imgpath(原图片路径及名称,水印图片路径及名称);
    之后开始加水印:
    $img->send();
    说明:
    send( strimg filename ) 这个方法有一个函数,可以省略,在省略的情况下,保存的图片路径和名称和原来的一样,如需保存成例外的图片,就在这里提供要保存的图片路径及名称
    例外,还有一个方法,show(); 这个方法用于显示加好水印的图片
    这个方法可以单独调用,但必须先调用 send()方法, 也可以连续调用: $img->send()->show(); PHPizabi PostgreSQL PHPWind BLOG phpBB
    imgA   = $oldimg;
    		$this->imgB   = $newing;
    		$this->weizhi = $WeiZhi;
    	   return $this;
    	 }
    	 
    	 public function send( $Name = '' ){
    		 !empty( $Name ) or $Name = $this->imgA;
    		 list($this->imgWA, $this->imgWB, $this->typea) = $this->imgread( $this->imgA );
    		 list($this->imgHA, $this->imgHB, $this->typeb) = $this->imgread( $this->imgB );
    		 $this->objecta = $this->openimg( $this->imgA, $this->typea );
    		 $this->objectb = $this->openimg( $this->imgB, $this->typeb );
    		 $this->WZ();
    		 $this->start();
    		 $this->over( $Name );
    		 return $this;
    	 }
    	
    	private function WZ() {
    		switch( $this->weizhi ) {
    			case 2:
    			     $this->X = ( $this->imgWA - $this->imgHA ) / 2;
    				 break;
    		    case 3:
    			     $this->X = ( $this->imgWA - $this->imgHA ); 
    				 break;
    		    case 4:
    			     $this->Y = ( $this->imgWB - $this->imgHB ) / 2 ;
    				 break;
    			case 5:
    			     $this->X = ( $this->imgWA - $this->imgHA ) / 2;
    			     $this->Y = ( $this->imgWB - $this->imgHB ) / 2 ;
    				 break;
    			case 6:
    			     $this->X = ( $this->imgWA - $this->imgHA );
    			     $this->Y = ( $this->imgWB - $this->imgHB ) / 2 ;
    			     break;
    			case 7:
    			     $this->Y = ( $this->imgWB - $this->imgHB );
    				 break;
    			case 8:
    			     $this->X = ( $this->imgWA - $this->imgHA ) / 2;
    				 $this->Y = ( $this->imgWB - $this->imgHB );
    				 break;
    			case 9:
    			     $this->X = ( $this->imgWA - $this->imgHA );
    				 $this->Y = ( $this->imgWB - $this->imgHB );
    				 break;
    			default:
    			    $this->X = 0;
    				$this->Y = 0;
    		}
    	}
    	
    	private function openimg( $FileName = '', $type = 0 ) {
    		switch( $type ) {
    			case 1:
    			     $obj = imagecreatefromgif( $FileName ); break;
    		    case 2:
    			     $obj = imagecreatefromjpeg( $FileName ); break;
    			case 3:
    			     $obj = imagecreatefrompng( $FileName ); break;
    			default:
    			    return false;
    		}
    	   return $obj;
    	}
    	
    	private function start(){
    		imagecopy( $this->objecta, $this->objectb, $this->X, $this->Y, 0, 0, $this->imgHA, $this->imgHB );
    	}
    	
    	private function over( $name = '1.jpg' ) {
    		$this->okfile = $name;
    		switch ( $this->typea ) {
    			case 1:
    			    imagegif( $this->objecta, $name );break;
    			case 2:
    			    imagejpeg( $this->objecta, $name );break;
    			case 3:
    			    imagepng( $this->objecta, $name ); break;
    			default:
    			   return false;
    		}
    	}
    	
    	
    	
    	private function imgread( $FilePath = '' ) {
    		$Arr = getimagesize( $FilePath );
    		return array( $Arr[0], $Arr[1], $Arr[2] );
    	}
    	
    	
       public function show(){
    	   @header('content-type:image/*');
    	   echo @file_get_contents( $this->okfile );
       }
    	
    }

    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    上一篇:php不会正则的痛 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• PHP用代码实现文件下载• smarty的保留变量问题• php根据用户语言跳转相应网页• php实现refresh刷新页面批量导入数据的方法• PHP中SESSION使用中的一点经验总结
    1/1

    PHP中文网