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 相关文章推荐
AJAX for PHP简单表数据查询实例
Jan 02 PHP
PHP 飞信好友免费短信API接口开源版
Jul 22 PHP
PHP取整数函数常用的四种方法小结
Jul 05 PHP
使用PHP实现Mysql读写分离
Jun 28 PHP
PHP时间戳 strtotime()使用方法和技巧
Oct 29 PHP
Symfony生成二维码的方法
Feb 04 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
Dec 29 PHP
PHP两种实现无级递归分类的方法
Mar 02 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
laravel中的一些简单实用功能
Nov 03 PHP
PHP信号处理机制的操作代码讲解
Apr 19 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往windows中添加用户
2006/12/06 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
php搜索文件程序分享
2015/10/30 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
php实现socket推送技术的示例
2017/12/20 PHP
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
2014/12/18 NodeJs
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
替换python字典中的key值方法
2018/07/06 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
python Tensor和Array对比分析
2020/01/08 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
python super()函数的基本使用
2020/09/10 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
Java工程师面试集锦之Spring框架
2013/06/16 面试题
保密工作承诺书
2014/08/29 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python