php实现等比例不失真缩放上传图片的方法


Posted in PHP onNovember 14, 2016

本文实例分析了php实现等比例不失真缩放上传图片的方法。分享给大家供大家参考,具体如下:

有时上传图片时因为图片太大了,不仅占用空间,消耗流量,而且影响浏(图片的尺寸大小不一)。下面分享一种等比例不失真缩放图片的方法,这样,不管上传的图片尺有多大,都会自动压缩到我们设置尺寸值的范围之内。经过测试,证明实用。

<?php
function resizeImage($im,$maxwidth,$maxheight,$name,$filetype)
 {
 $pic_width = imagesx($im);
 $pic_height = imagesy($im);
 if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight))
 {
  if($maxwidth && $pic_width>$maxwidth)
  {
  $widthratio = $maxwidth/$pic_width;
  $resizewidth_tag = true;
  }
  if($maxheight && $pic_height>$maxheight)
  {
  $heightratio = $maxheight/$pic_height;
  $resizeheight_tag = true;
  }
  if($resizewidth_tag && $resizeheight_tag)
  {
  if($widthratio<$heightratio)
   $ratio = $widthratio;
  else
   $ratio = $heightratio;
  }
  if($resizewidth_tag && !$resizeheight_tag)
  $ratio = $widthratio;
  if($resizeheight_tag && !$resizewidth_tag)
  $ratio = $heightratio;
  $newwidth = $pic_width * $ratio;
  $newheight = $pic_height * $ratio;
  if(function_exists("imagecopyresampled"))
  {
  $newim = imagecreatetruecolor($newwidth,$newheight);//PHP系统函数
   imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);//PHP系统函数
  }
  else
  {
  $newim = imagecreate($newwidth,$newheight);
   imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
  }
  $name = $name.$filetype;
  imagejpeg($newim,$name);
  imagedestroy($newim);
 }
 else
 {
  $name = $name.$filetype;
  imagejpeg($im,$name);
 }
 }
//使用方法:
$im=imagecreatefromjpeg("./20140416103023202.jpg");//参数是图片的存方路径
$maxwidth="600";//设置图片的最大宽度
$maxheight="400";//设置图片的最大高度
$name="123";//图片的名称,随便取吧
$filetype=".jpg";//图片类型
resizeImage($im,$maxwidth,$maxheight,$name,$filetype);//调用上面的函数

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
做一个有下拉功能的留言版
Oct 09 PHP
七款最流行的PHP本地服务器分享
Feb 19 PHP
解析php安全性问题中的:Null 字符问题
Jun 21 PHP
php addslashes 利用递归实现使用反斜线引用字符串
Aug 05 PHP
在PHP中运行Linux命令并启动SSH服务的例子
Jun 12 PHP
phalcon框架使用指南
Feb 23 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
Nov 29 PHP
PHP设计模式之注册树模式分析
Jan 26 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
Aug 21 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 PHP
laravel 创建命令行命令的图文教程
Oct 23 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 PHP
PHP互换两个变量值的方法(不用第三变量)
Nov 14 #PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
Nov 14 #PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 #PHP
php中10个不同等级压缩优化图片操作示例
Nov 14 #PHP
Symfony2创建基于域名的路由相关示例
Nov 14 #PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
Nov 14 #PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 #PHP
You might like
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
php判断两个浮点数是否相等的方法
2015/03/14 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
jQuery 移动端artEditor富文本编辑器
2016/01/11 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
vue.js编译时给生成的文件增加版本号
2018/09/17 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
python编写分类决策树的代码
2017/12/21 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
python分布式计算dispy的使用详解
2019/12/22 Python
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
经典c++面试题六
2012/01/18 面试题
商场圣诞节活动总结
2015/05/06 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
vue3语法糖内的defineProps及defineEmits
2022/04/14 Vue.js
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers