php实现水印图功能
来源: 阅读:675 次 日期:2015-04-15 15:19:31
温馨提示: 小编为您整理了“php实现水印图功能”,方便广大网友查阅!

php实现水印图功能.

测试水印的文件代码:

<?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<>

* @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;

}

}

?>

更多信息请查看IT技术专栏

更多信息请查看网络编程
手机网站地址:php实现水印图功能
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map