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笔记 字符串处理
Oct 19 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
Aug 09 PHP
php分页函数示例代码分享
Feb 24 PHP
重新认识php array_merge函数
Aug 31 PHP
php上传图片类及用法示例
May 11 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
PHP面向对象之事务脚本模式(详解)
Jun 07 PHP
关于PHP转换超过2038年日期出错的问题解决
Jun 28 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
Oct 16 PHP
PHP中用Trait封装单例模式的实现
Dec 18 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下删除字符串中HTML标签的函数
2008/08/27 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
Javascript typeof 用法
2008/12/28 Javascript
Node.js开发指南中的简单实例(mysql版)
2013/09/17 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
Python使用指定端口进行http请求的例子
2019/07/25 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
python的slice notation的特殊用法详解
2019/12/27 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
矫正人员思想汇报
2014/01/08 职场文书
元旦寄语大全
2014/04/10 职场文书
单位绩效考核方案
2014/05/11 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
运动会报道稿大全
2015/07/23 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript