php经典实例图片的等比缩放和Logo水印源码免费下载

来源:https://www.sucaihuo.com/php/945.html 2016-09-23 10:57浏览(1108) 收藏

php经典实例图片的等比缩放和Logo水印源码免费下载
php经典实例图片的等比缩放和Logo水印源码免费下载
分类:PHP > 其他 难易:入门级
下载资源 下载积分: 26 积分
<?php
header("Content-type: text/html; charset=utf-8");
//公共函数库

/**
 * 等比缩放函数(以保存的方式实现)
 * @param string $picname 被缩放的处理图片源
 * @param int $maxx 缩放后图片的最大宽度
 * @param int $maxy 缩放后图片的最大高度
 * @param string $pre 缩放后图片名的前缀名
 * @return String 返回后的图片名称(带路径),如a.jpg=>s_a.jpg
 */
function imageUpdateSize($picname,$maxx=100,$maxy=100,$pre="s_"){
	$info = getimageSize($picname); //获取图片的基本信息
	
	$w = $info[0];//获取宽度
	$h = $info[1];//获取高度
	
	//获取图片的类型并为此创建对应图片资源	
	switch($info[2]){
		case 1: //gif
			$im = imagecreatefromgif($picname);
			break;
		case 2: //jpg
			$im = imagecreatefromjpeg($picname);
			break;
		case 3: //png
			$im = imagecreatefrompng($picname);
			break;
		default:
			die("图片类型错误!");
	}
	
	//计算缩放比例
	if(($maxx/$w)>($maxy/$h)){
		$b = $maxy/$h;
	}else{
		$b = $maxx/$w;
	}
	
	//计算出缩放后的尺寸
	$nw = floor($w*$b);
	$nh = floor($h*$b);
	
	//创建一个新的图像源(目标图像)
	$nim = imagecreatetruecolor($nw,$nh);
		
	//执行等比缩放
	imagecopyresampled($nim,$im,0,0,0,0,$nw,$nh,$w,$h);
	
	//输出图像(根据源图像的类型,输出为对应的类型)
	$picinfo = pathinfo($picname);//解析源图像的名字和路径信息
	$newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];
	switch($info[2]){
		case 1:
			imagegif($nim,$newpicname);
			break;
		case 2:
			imagejpeg($nim,$newpicname);
			break;
		case 3:
			imagepng($nim,$newpicname);
			break;
	}
	//释放图片资源
	imagedestroy($im);
	imagedestroy($nim);
	//返回结果
	return $newpicname;
}

//测试:
imageUpdateSize("./images/bg.jpg",500,500,"ss_");  //  ./images/s_bg.jpg

echo "<h2>原图</h2>";
echo "<img src='./images/bg.jpg'>"; echo "<h2>等比缩放后的图</h2>";echo "<img src='./images/ss_bg.jpg'>";



/**
 * 为一张图片添加上一个logo图片水印(以保存的方式实现)
 * @param string $picname 被处理图片源
 * @param string $logo 水印图片
 * @param string $pre 处理后图片名的前缀名
 * @return String 返回后的图片名称(带路径),如a.jpg=>n_a.jpg
 */
function imageUpdateLogo($picname,$logo,$pre="n_"){
	$picnameinfo = getimageSize($picname); //获取图片源的基本信息
	$logoinfo = getimageSize($logo); //获取logo图片的基本信息
	//var_dump($logoinfo);
	//根据图片类型创建出对应的图片源
	switch($picnameinfo[2]){
		case 1: //gif
			$im = imagecreatefromgif($picname);
			break;
		case 2: //jpg
			$im = imagecreatefromjpeg($picname);
			break;
		case 3: //png
			$im = imagecreatefrompng($picname);
			break;
		default:
			die("图片类型错误!");
	}
	//根据logo图片类型创建出对应的图片源
	switch($logoinfo[2]){
		case 1: //gif
			$logoim = imagecreatefromgif($logo);
			break;
		case 2: //jpg
			$logoim = imagecreatefromjpeg($logo);
			break;
		case 3: //png
			$logoim = imagecreatefrompng($logo);
			break;
		default:
			die("logo图片类型错误!");
	}
	

	//执行图片水印处理
	imagecopyresampled($im,$logoim,$picnameinfo[0]-$logoinfo[0],$picnameinfo[1]-$logoinfo[1],0,0,$logoinfo[0],$logoinfo[1],$logoinfo[0],$logoinfo[1]);
	
	//输出图像(根据源图像的类型,输出为对应的类型)
	$picinfo = pathinfo($picname);//解析源图像的名字和路径信息
	$newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];
	switch($picnameinfo[2]){
		case 1:
			imagegif($im,$newpicname);
			break;
		case 2:
			imagejpeg($im,$newpicname);
			break;
		case 3:
			imagepng($im,$newpicname);
			break;
	}
	//释放图片资源
	imagedestroy($im);
	imagedestroy($logoim);
	//返回结果
	return $newpicname;
}

//测试
imageUpdateLogo("./images/bg.jpg","./images/logo.png");

echo "<h2>执行图片水印后的图</h2>";echo "<img src='./images/n_bg.jpg'>";
评论0
头像

系统已开启自动识别垃圾评论机制,识别到的自动封号,下载出错或者资源有问题请联系全栈客服QQ 1915635791

1 2