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
NOD32 v2.70.32 简体中文封装版 提供下载了
Feb 27 PHP
php mssql 时间格式问题
Jan 13 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
php自定义的格式化时间示例代码
Dec 05 PHP
thinkphp实现like模糊查询实例
Oct 29 PHP
ThinkPHP采用原生query实现关联查询left join实例
Dec 02 PHP
深入讲解PHP Session及如何保持其不过期的方法
Aug 18 PHP
php使用scandir()函数扫描指定目录下所有文件示例
Jun 08 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 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
Yii学习总结之安装配置
2015/02/22 PHP
php验证码生成代码
2015/11/11 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
JavaScript 高级语法介绍
2009/06/15 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
JSONP之我见
2015/03/24 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
JS在if中的强制类型转换方式
2018/07/15 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
微信小程序单选框自定义赋值
2020/05/26 Javascript
详解python 发送邮件实例代码
2016/12/22 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
Python如何使用函数做字典的值
2019/11/30 Python
python numpy数组复制使用实例解析
2020/01/10 Python
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
便利店的创业计划书
2014/01/15 职场文书
小区门卫管理制度
2014/01/29 职场文书
新员工入职感言
2014/02/01 职场文书
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
计算机求职信
2014/07/02 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
临时用工协议书范本
2014/10/29 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
小学音乐课教学反思
2016/02/18 职场文书
担保书怎么写 ?
2019/04/22 职场文书
详解如何用Python实现感知器算法
2021/06/18 Python
分析Java中Map的遍历性能问题
2021/06/26 Java/Android
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android