PHP 实现缩略图


Posted in PHP onMarch 09, 2021
/*
$uploaded - 已上传的文件,可以理解为原图片
$uptype - 图片类型
$filename - 生成的缩略图的文件名(可包含路径)
$a_width - 缩略图宽度
$a_height - 缩略图高度
*/
	function creat_thumb($uploaded,$uptype,$filename,$a_width,$a_height)
	{
		$im = '';

		if($uptype == 'image/pjpeg' || $uptype == 'image/jpeg')
		{
			$im = imagecreatefromjpeg($uploaded);
		}
		else if($uptype == 'image/x-png' || $uptype == 'image/png')
		{
			$im = imagecreatefrompng($uploaded); 
		}
		else if($uptype == 'image/gif')
		{
			$im = imagecreatefromgif($uploaded); 
		}

		$width = imagesx($im); 
		$height = imagesy($im);

		//确保原图比要生成的缩略图宽高要大
		//计算宽高比例,哪个值大就按照哪个作为基准
		//如果宽高相等,则忽略
		if($width > $a_width || $height > $a_height)
		{
			if($width >= $height)
			{
				$newwidth = $a_width;
				$newheight = ($height * $a_width) / $width;
				
				
				$nx = 0;
				$ny = 0;
			}
			else
			{
				$newheight = $a_height;
				$newwidth = ($width * $a_height) / $height;
				$nx = 0;
				$ny = 0;
			}
			
			if(function_exists("imagecopyresampled"))
			{ 
				$newim = imagecreatetruecolor($newwidth, $newheight);
				if($uptype == 'image/x-png' || $uptype == 'image/png')
				{
					$alpha = imagecolorallocatealpha($newim, 0, 0, 0, 127);
					imagefill($newim, 0, 0, $alpha);
				}
				imagecopyresampled($newim, $im,  0, 0,$nx,$ny,  $newwidth, $newheight, $width, $height); 
			}
			else
			{ 
				$newim = imagecreate($newwidth, $newheight); 
				imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
			}
			if($uptype == 'image/x-png' || $uptype == 'image/png')
			{
				imagesavealpha($newim, true);
				imagepng($newim,$filename);
			}
			else
			{
				imagejpeg($newim,$filename); 
			}
			imagedestroy($newim);
		}
	}

 

PHP 相关文章推荐
用PHP制作静态网站的模板框架(二)
Oct 09 PHP
php抓取页面与代码解析 推荐
Jul 23 PHP
PHP遍历数组的几种方法
Mar 22 PHP
php获取$_POST同名参数数组的实现介绍
Jun 30 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
php sybase_fetch_array使用方法
Apr 15 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
Aug 21 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
Nov 24 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
php框架CodeIgniter使用redis的方法分析
Apr 13 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
Jun 10 PHP
PHP 裁剪图片
Mar 09 #PHP
PHP 使用位运算实现四则运算的代码
Mar 09 #PHP
让你的PHP,APACHE,NGINX支持大文件上传
Mar 09 #PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
Mar 09 #PHP
PHP中echo与print区别点整理
Mar 09 #PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
Mar 09 #PHP
PHP读取文件或采集时解决中文乱码
Mar 09 #PHP
You might like
PHP生成网页快照 不用COM不用扩展.
2010/02/11 PHP
php性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
PHP表单验证内容是否为空的实现代码
2016/11/14 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
ES6数组的扩展详解
2017/04/25 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
python判断设备是否联网的方法
2018/06/29 Python
python的pip安装以及使用教程
2018/09/18 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
Python序列化pickle模块使用详解
2020/03/05 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
党员一句话承诺大全
2014/03/28 职场文书
借款协议书范本
2014/04/22 职场文书
护士找工作求职信
2014/07/02 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
公司催款律师函
2015/05/27 职场文书
2016新年致辞
2015/08/01 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript