首页 >php教程 >php手册 > 正文

php水印图类

原创2016-06-06 19:31:450589

图片加上标签 无 ?phprequire( './WaterMark.class.php' );$water = new WaterMark( './images/psb.jpg', './images/200(1).jpg' );$water-Exec( './images/w.jpg', 'center-center' );? ?php/** * Add water stain to specified image * @author pankai53091

图片加上标签 <无>
Exec( './images/w.jpg', 'center-center' );
?>

 * @date 2013-09-27
 */
class WaterMark {
	/* Image source path */
	private $_src_path = NULL;
	private $_image_source = NULL;
	
	/* Water-Stain image source path */
	private $_water_path = NULL;
	private $_water_source = NULL;
	
	private $_extension = NULL;
	
	public function __construct( $_src_path, $_water_path ) {
		$this->_src_path = $_src_path;
		$this->_water_path = $_water_path;
	}
	
	/**
	 * Get image source form image designated path
	 * @param $_img_path
	 * @return resource 
	 */
	private function getImageSource( $_img_path ) {
		$_path = explode( ".", strtolower( $_img_path ) );
		$_bak = strtoupper( $_path[ sizeof( $_path ) - 1 ] );
		$_img_source = NULL;
		$this->_extension = $_bak;
		
		switch( $_bak ) {
			case "GIF":
				$_img_source = @imagecreatefromgif( $_img_path );
				break;
			case "JPG":
			case "JPEG":
				$_img_source = @imagecreatefromjpeg( $_img_path );
				break;
			case "PNG":
				$_img_source = @imagecreatefrompng( $_img_path );
				break;
			case "WBMP":
				$_img_source = @imagecreatefromwbmp( $_img_path );
				break;
		}

		return $_img_source;
	}
	
	/**
	 * Count coordinate
	 * @param $direction string
	 * @return array
	 */
	private function countArgs( &$_src, &$_water, $_direction ) {
		$_args = NULL;
		/** 
		 * Count the image's width and image's height 
		 * 		which are used to show Water-Stain image arbitrarily
		 */
		$src_x = imagesx( $_src );
		$src_y = imagesy( $_src );
		
		$water_x = imagesx( $_water );
		$water_y =  imagesy( $_water );
		
		switch( strtolower( $_direction ) ) {
			case 'top-left':
				$_args = array( 0, 0 );
				break;
			case 'top-center':
				$_args = array( floor( ( $src_x - $water_x ) / 2 ), 0 );
				break;
			case 'top-right':
				$_args = array( $src_x - $water_x, 0 );
				break;
			case 'center-left':
				$_args = array( 0, floor( ( $src_y - $water_y ) / 2 ) );
				break;
			case 'center-center':
				$_args = array( floor( ( $src_x - $water_x ) / 2 ), floor( ( $src_y - $water_y ) / 2 )  );
				break;
			case 'center-right':
				$_args = array( $src_x - $water_x, floor( ( $src_y - $water_y ) / 2 )  );
				break;
			case 'bottom-left':
				$_args = array( 0, $src_y - $water_y );
				break;
			case 'bottom-center':
				$_args = array( floor( ( $src_x - $water_x ) / 2 ), $src_y - $water_y );
				break;
			case 'bottom-right':
				$_args = array( $src_x - $water_x, $src_y - $water_y  );
				break;
		}
		
		return $_args;
	}
	
	/**
	 * The main programmer: copy Water-Stain image source into specified image source,
	 * 		then save this into appointed path
	 * @param $dst_name
	 * @return bool
	 */
	public function Exec( $dst_name, $direction = 'bottom-right' ) {
		$this->_image_source = &$this->getImageSource( $this->_src_path );
		$this->_water_source = &$this->getImageSource( $this->_water_path );
		
		$water_x = imagesx( $this->_water_source );
		$water_y =  imagesy( $this->_water_source );
		
		$_args = $this->countArgs( $this->_image_source, $this->_water_source, $direction );
		
		$_copy = imagecopy( $this->_image_source, $this->_water_source, 
			abs( $_args[ 0 ] ), abs( $_args[ 1 ] ), 0, 0, $water_x, $water_y );
		
		$_out = true;
		/* imagejpeg( $this->img_dst, $dst_name, 100 ); */
		switch ( $this->_extension ) {
			case 'GIF':
				$_out = imagegif( $this->_image_source, $dst_name );
				break;
			case 'JPG':
			case 'JPEG':
				$_out = imagejpeg( $this->_image_source, $dst_name, 100 );
				break;
			case 'PNG':
				$_out = imagepng( $this->_image_source, $dst_name );
				break;
			case 'WBMP':
				$_out = imagewbmp( $this->_image_source, $dst_name );
		}
		
		return $_copy && $_out;	
	}
}
?>
php中文网最新课程二维码

声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

相关文章

相关视频


网友评论

文明上网理性发言,请遵守 新闻评论服务协议

我要评论
  • 专题推荐

    作者信息

    php中文网

    认证0级讲师

    推荐视频教程
  • javascript初级视频教程javascript初级视频教程
  • jquery 基础视频教程jquery 基础视频教程
  • 视频教程分类