ホームページ > php教程 > php手册 > php水印图类

php水印图类

WBOY
リリース: 2016-06-06 19:31:45
オリジナル
1490 人が閲覧しました

图片加上标签 无 ?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

图片加上标签
<?php
require( './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 pankai<530911044@qq.com>
 * @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.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート