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 相关文章推荐
用PHP中的 == 运算符进行字符串比较
Nov 26 PHP
php 防止单引号,双引号在接受页面转义
Jul 10 PHP
字母顺序颠倒而单词顺序不变的php代码
Aug 08 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
destoon首页调用求购供应信息的地区名称的方法
Aug 21 PHP
通过php添加xml文档内容的方法
Jan 23 PHP
php ajax异步读取rss文档数据
Mar 29 PHP
PHP的swoole扩展安装方法详细教程
May 18 PHP
PHP中单例模式与工厂模式详解
Feb 17 PHP
详解yii2使用多个数据库的案例
Jun 16 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
在PHP中使用XML
2006/10/09 PHP
PHP的变量总结 新手推荐
2011/04/18 PHP
解析PHP工厂模式的好处
2013/06/18 PHP
PHP定时更新程序设计思路分享
2014/06/10 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
js中的布尔运算符使用介绍
2013/11/20 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
2019/05/14 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
Python高级property属性用法实例分析
2019/11/19 Python
纯CSS3代码实现文字描边
2016/04/25 HTML / CSS
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
学生手册评语
2014/05/05 职场文书
婚礼秀策划方案
2014/05/19 职场文书
宿舍标语大全
2014/06/19 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
企业宣传稿范文
2015/07/23 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
2021/05/30 Javascript
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python