欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

给图片加水印

程序员文章站 2022-04-22 20:58:27
...
跳至
<?php
/**
  * 功能:给一张图片加上水印效果
  *           $i  要加水印效果的图片
  *           $t  水印文字
  *           $size 文字大小
  *           $pos 水印的位置
  *   		   $color 文字的颜色
  *           $flag 是布尔值,主要用来区分是不是原图上加水印
  *           $type 如果$flag等于false 则新图上加上水印 新文件名为 原名_txt.jpg
  */
function txt($i,$t='版权所有',$size=25,$pos=5,$color='rand',$flag=true,$type='_txt'){
	$img = imagecreatefromjpeg($i);
	$w = imagesx($img);
	$h = imagesy($img);
	$font = dirname(__FILE__).'/font/ls.ttf';
	$ps = imagettfbbox($size,0,$font,$t);
	$tw = $ps[4];
	$th = abs($ps[5]);
	switch($pos){
		case 1:break;	
		case 2:break;	
		case 3:break;	
		case 4:break;	
		case 5:$x=($w-$tw)/2;$y=($h-$th)/2+$th;break;	
		case 6:break;	
		case 7:break;	
		case 8:break;	
		case 9:break;	
		default:break;
	}
	$c = getcolor($img,$color);
	imagettftext($img,$size,0,$x,$y,$c,$font,$t);
	if($flag){
		imagejpeg($img,$i);	
	}else{
		$ext = ext($i);
		$ppp = rtrim($i,'.'.$ext);
		$ppp = $ppp.$type.'.'.$ext;
		imagejpeg($img,$ppp);
	}
}

function getcolor($i,$c='rand',$a=50){
	$cc = '';
	switch($c){
		case 'white':$cc=imagecolorallocatealpha($i,255,255,255,$a);break;
		case 'black':$cc=imagecolorallocatealpha($i,0,0,0,$a);break;
		case 'red':$cc=imagecolorallocatealpha($i,255,0,0,$a);break;
		case 'green':$cc=imagecolorallocatealpha($i,0,255,0,$a);break;
		case 'blue':$cc=imagecolorallocatealpha($i,0,0,255,$a);break;
		case 'orange':$cc=imagecolorallocatealpha($i,0xff,0x66,0x33,$a);break;
		case 'yellow':$cc=imagecolorallocatealpha($i,255,255,0,$a);break;
		case 'rand':$cc=imagecolorallocatealpha($i,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255),$a);break;
		default:
			$cs = substr($c,1);
			$ok = str_split($cs,2);
			$cc = imagecolorallocatealpha($i,hexdec($ok[0]),hexdec($ok[1]),hexdec($ok[2]),$a);
		break;		
	}
	return $cc;
}


/**
 * 功能是:返回扩展名
 */
 
function ext($f){
	$exts = explode('.',$f);
	return end($exts);
}

/**
  *  功能是:返回文件名,不含扩展名
  */
function name($f){
	$s = explode('/',$f);
	$fn = end($s);
	return rtrim($fn,'.'.ext($f));
}

相关标签: 给图片加水印