给hhzuitu1.6增加上传水印功能,同样适用于最土源程序

首先, 修改include/function目录下的common.php, 在upload_image函数下增加一个函数叫mark_image, 内容如下:

function mark_image($image_size, $path, $markimgpath) {
	$iinfo = getimagesize($path,$iinfo);
	$nimage = imagecreatetruecolor($image_size[0], $image_size[1]);
	$white=imagecolorallocate($nimage,255,255,255);
	$black = imagecolorallocate($nimage,0,0,0);
	$red=imagecolorallocate($nimage,255,0,0);
	imagefill($nimage,0,0,$white);
	switch ($iinfo[2]){
		case 1:
		$simage = imagecreatefromgif($path);break;
		case 2:
		$simage = imagecreatefromjpeg($path);break;
		case 3:
		$simage = imagecreatefrompng($path);break;
		case 6:
		$simage = imagecreatefromwbmp($path);break;
		default:
		die("不支持的文件类型");exit;
	 }

	 imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
	 $simage1 = imagecreatefrompng($markimgpath);
	 imagecopy($nimage,$simage1,40,40,0,0,263,58);
	 imagedestroy($simage1);
	 switch ($iinfo[2]){
		case 1:
		imagejpeg($nimage, $path);break;
		case 2:
		imagejpeg($nimage, $path);break;
		case 3:
		imagepng($nimage, $path);break;
		case 6:
		imagewbmp($nimage, $path);break;
	 }
	 imagedestroy($nimage);
	 imagedestroy($simage);
}

第二步, 在upload_image函数的 $z = $_FILES[$input];  行下增加


$filename = $z["tmp_name"];
$image_size = getimagesize($filename);

第三步, 在upload_image函数的 move_uploaded_file($z['tmp_name'], $path); 行下增加


mark_image($image_size, $path, IMG_ROOT .'/logo.png');
// logo.png 就是水印图片你可以生成自己的水印图片放到static目录下即可

经过第三步之后, upload_image函数如下:

function upload_image($input, $image=null, $type='team', $scale=false) {
	$year = date('Y'); $day = date('md');
	$n = time().rand(1000,9999).'.jpg';
	$z = $_FILES[$input];
	$filename = $z["tmp_name"];
    $image_size = getimagesize($filename);
	if ($z && strpos($z['type'], 'image')===0 && $z['error']==0) {
		if (!$image) {
			RecursiveMkdir( IMG_ROOT . '/' . "{$type}/{$year}/{$day}" );
			$image = "{$type}/{$year}/{$day}/{$n}";
			$path = IMG_ROOT . '/' . $image;
		} else {
			RecursiveMkdir( dirname(IMG_ROOT .'/' .$image) );
			$path = IMG_ROOT . '/' .$image;
		}
		if ($type=='user') {
			Image::Convert($z['tmp_name'], $path, 48, 48, Image::MODE_CUT);
		}
		else if($type=='team') {
			move_uploaded_file($z['tmp_name'], $path);
			mark_image($image_size, $path, IMG_ROOT .'/logo.png');
		}
		if($type=='team' && $scale) {
			$npath = preg_replace('#(\d+)\.(\w+)$#', "\\1_index.\\2", $path);
			Image::Convert($path, $npath, 190, 120, Image::MODE_CUT);
		}
		return $image;
	}
	return $image;
}

第四步, 修改根目录下的upload.php文件,在file_put_contents($target, $data);和move_uploaded_file($upfile['tmp_name'],$target);行的下面增加


$image_size = getimagesize($target);

mark_image($image_size, $target, IMG_ROOT .'/logo.png');

结束, 上传这两个文件和你的水印图片到服务器就ok了.

如果你想直接获得文件:
upload.php: 下载
common.php: 下载
logo.png: logopng

相关文章

评论关闭。