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
增加反向链接的101个方法 站长推荐
Jan 31 PHP
php中文字母数字验证码实现代码
Apr 25 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
Apr 18 PHP
PHP中SESSION使用中的一点经验总结
Mar 30 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
Oct 05 PHP
浅析get与post的一些特殊情况
Jul 28 PHP
jQuery Mobile + PHP实现文件上传
Dec 12 PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
PHP实现的策略模式简单示例
Aug 25 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 22 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
中英文字符串翻转函数
2008/12/09 PHP
分享10段PHP常用代码
2015/11/11 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
禁止你的左键复制实用技巧
2013/01/04 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
小程序接口的promise化的实现方法
2019/12/11 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
为Python的web框架编写前端模版的教程
2015/04/30 Python
Python实现LRU算法的2种方法
2015/06/24 Python
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
python打开windows应用程序的实例
2019/06/28 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
大学教师年终总结的自我评价
2013/10/29 职场文书
人力资源管理专业学生自我评价
2013/11/20 职场文书
住房公积金接收函
2014/01/09 职场文书
优秀中学生事迹材料
2014/01/31 职场文书
疾病捐款倡议书
2014/05/13 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
期中考试后的感想
2015/08/07 职场文书
小学中队长竞选稿
2015/11/20 职场文书