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 magic_quotes_gpc的一点认识与分析
Aug 18 PHP
一些php技巧与注意事项分析
Feb 03 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
php表单敏感字符过滤类
Dec 08 PHP
php打印输出棋盘的实现方法
Dec 23 PHP
浅谈使用PHP开发微信支付的流程
Oct 04 PHP
PHP获取当前日期及本周一是几月几号的方法
Mar 28 PHP
PHP处理bmp格式图片的方法分析
Jul 04 PHP
php判断文件上传图片格式的实例详解
Sep 30 PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 09 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 30 PHP
Thinkphp5框架异常处理操作实例分析
Jun 03 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
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
php的sso单点登录实现方法
2015/01/08 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
javascript import css实例代码
2008/07/18 Javascript
js cookies实现简单统计访问次数
2009/11/24 Javascript
jQuery 学习第七课 扩展jQuery的功能 插件开发
2010/05/17 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
Angular学习教程之RouterLink花式跳转
2018/05/03 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
微信小程序实现工作时间段选择
2019/02/15 Javascript
了解javascript中let和var及const关键字的区别
2019/05/24 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
工程学毕业生自荐信
2014/06/14 职场文书
求职自我推荐信
2014/06/25 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
大学生个人学习总结
2015/02/15 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python
Spring Boot实现文件上传下载
2022/08/14 Java/Android