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数组及条件,循环语句学习
Nov 11 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
php遍历目录方法小结
Mar 10 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 PHP
php实现将base64格式图片保存在指定目录的方法
Oct 13 PHP
php中输出json对象的值(实现方法)
Mar 07 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
Jun 25 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
Dec 13 PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 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的FTP学习(二)
2006/10/09 PHP
php读取3389的脚本
2014/05/06 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
PHP编写简单的App接口
2016/08/28 PHP
PHP二维数组去重算法
2016/12/17 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
javascript Prototype 对象扩展
2009/05/15 Javascript
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
关于Vue组件库开发详析
2018/07/01 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
python 提取文件的小程序
2009/07/29 Python
Python实用日期时间处理方法汇总
2015/05/09 Python
python实现文本文件合并
2015/12/29 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
Python网络编程 Python套接字编程
2017/09/13 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
PythonPC客户端自动化实现原理(pywinauto)
2020/05/28 Python
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
自我评价正确写法范文
2013/12/10 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
美术课外活动总结
2014/07/08 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
求职推荐信范文
2015/03/27 职场文书
部队2015年终工作总结
2015/04/02 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
pytorch 如何使用float64训练
2021/05/24 Python