欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > php >内容正文

php

php铺满,重复铺满水印 - Jun. - OSCHINA - 中文开源技术交流社区

发布时间:2024/9/27 php 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 php铺满,重复铺满水印 - Jun. - OSCHINA - 中文开源技术交流社区 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

/*

$tmp="tmp/a.jpg";

$obj = new WaterMask($tmp);

$obj->waterImg = 'sy_logo.png';

$obj->transparent = 50;

$obj->output();

*/

class WaterMask{

public $pos = 0; //水印位置

public $transparent = 45; //水印透明度

public $waterImg = ''; //水印图片

private $srcImg = ''; //需要添加水印的图片

private $im = ''; //图片句柄

private $water_im = ''; //水印图片句柄

private $srcImg_info = ''; //图片信息

private $waterImg_info = ''; //水印图片信息

function __construct($img) { //析构函数

$this->srcImg = file_exists($img) ? $img : die('"'.$img.'" 源文件不存在!');

}

private function imginfo() { //获取需要添加水印的图片的信息,并载入图片。

$this->srcImg_info = getimagesize($this->srcImg);

switch ($this->srcImg_info[2]) {

case 3:

$this->im = imagecreatefrompng($this->srcImg);

break 1;

case 2:

$this->im = imagecreatefromjpeg($this->srcImg);

break 1;

case 1:

$this->im = imagecreatefromgif($this->srcImg);

break 1;

default:

die('原图片('.$this->srcImg.')格式不对,只支持PNG、JPEG、GIF。');

}

}

private function waterimginfo() { //获取水印图片的信息,并载入图片。

$this->waterImg_info = getimagesize($this->waterImg);

switch ($this->waterImg_info[2]) {

case 3:

$this->water_im = imagecreatefrompng($this->waterImg);

break 1;

case 2:

$this->water_im = imagecreatefromjpeg($this->waterImg);

break 1;

case 1:

$this->water_im = imagecreatefromgif($this->waterImg);

break 1;

default:

die('水印图片('.$this->srcImg.')格式不对,只支持PNG、JPEG、GIF。');

}

}

private function waterimg() {

if ($this->srcImg_info[0] <= $this->waterImg_info[0] || $this->srcImg_info[1] <= $this->waterImg_info[1]){

die('水印比原图大!');

}

$cut = imagecreatetruecolor($this->waterImg_info[0],$this->waterImg_info[1]);

$total=($this->srcImg_info[0]/$this->waterImg_info[0])*($this->srcImg_info[1]/$this->waterImg_info[1]);//重复次数

$x=10;$y=10;

for($i=0;$i<=$total;$i++){

if($y>$this->srcImg_info[1]){

$y=10;

$x+=$this->waterImg_info[0]+150;

}

imagecopy($cut,$this->im,0,0,$x,$y,$this->waterImg_info[0],$this->waterImg_info[1]);

imagecopy($cut,$this->water_im,0,0,0,0,$this->waterImg_info[0],$this->waterImg_info[1]);

imagecopymerge($this->im,$cut,$x,$y,0,0,$this->waterImg_info[0],$this->waterImg_info[1],$this->transparent);

$y+=150;

}

}

function output() {

$this->imginfo();

$this->waterimginfo();

$this->waterimg();

switch ($this->srcImg_info[2]) {

case 3:

imagepng($this->im,$this->srcImg);

break 1;

case 2:

imagejpeg($this->im,$this->srcImg);

break 1;

case 1:

imagegif($this->im,$this->srcImg);

break 1;

default:

die('添加水印失败!');

break;

}

imagedestroy($this->im);

imagedestroy($this->water_im);

}

}

?>

总结

以上是生活随笔为你收集整理的php铺满,重复铺满水印 - Jun. - OSCHINA - 中文开源技术交流社区的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。