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脚本的10个技巧(8)
Oct 09 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 PHP
解决PHP超大文件下载,断点续传下载的方法详解
Jun 06 PHP
解析PHP提交后跳转
Jun 23 PHP
浅析51个PHP处理字符串的函数
Aug 02 PHP
php中sql注入漏洞示例 sql注入漏洞修复
Jan 24 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
php微信开发之上传临时素材
Jun 24 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
Nov 12 PHP
Symfony2针对输入时间进行查询的方法分析
Jun 28 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
PHP实现权限管理功能示例
Sep 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
php 空格,换行,跳格使用说明
2009/12/18 PHP
php 获取当前访问的url文件名的方法小结
2010/02/08 PHP
php中设置多级目录session的问题
2011/08/08 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
js类的静态属性和实例属性的理解
2009/10/01 Javascript
JS中表单的使用小结
2014/01/11 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
2016/05/18 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
新手vue构建单页面应用实例代码
2017/09/18 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
js实现简单模态框实例
2018/11/16 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Atom的python插件和常用插件说明
2018/07/08 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
Java中的基本数据类型所占存储空间大小固定的吗
2012/02/15 面试题
班组安全员工作职责
2014/02/01 职场文书
网络宣传方案
2014/03/15 职场文书
保护水资源的标语
2014/06/17 职场文书
大学生受助感言
2015/08/01 职场文书
《司马光》教学反思
2016/02/22 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL