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 数据库树的遍历方法
Feb 06 PHP
将一维或多维的数组连接成一个字符串的php代码
Aug 08 PHP
让PHP以ROOT权限执行系统命令的方法
Feb 10 PHP
WordPress判断用户是否登录的代码
Mar 17 PHP
提高define性能的php扩展hidef的安装和使用
Jun 14 PHP
根据中文裁减字符串函数的php代码
Dec 03 PHP
Laravel 5框架学习之子视图和表单复用
Apr 09 PHP
php线性表的入栈与出栈实例分析
Jun 12 PHP
php for 循环使用的简单实例
Jun 02 PHP
PHP对象的浅复制与深复制的实例详解
Oct 26 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 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安装为Apache DSO
2006/10/09 PHP
Email+URL的判断和自动转换函数
2006/10/09 PHP
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
如何在php中正确的使用json
2013/08/06 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
javascript 获取网页参数系统
2008/07/19 Javascript
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
javscript 数组扁平化的实现
2020/02/03 Javascript
三个python爬虫项目实例代码
2019/12/28 Python
python tkinter之顶层菜单、弹出菜单实例
2020/03/04 Python
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
欧洲最大的化妆品连锁公司:Douglas道格拉斯
2017/05/06 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
Overload和Override的区别
2012/09/02 面试题
酒店服务与管理毕业生求职信
2013/11/02 职场文书
年度考核自我鉴定
2013/11/09 职场文书
上级检查欢迎词
2014/01/18 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
村党建工作汇报材料
2014/11/02 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
党员个人承诺书
2015/04/27 职场文书
主婚人致辞精选
2015/07/28 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫