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 数据库字段复用的基本原理与示例
Jul 22 PHP
php更新mysql后获取影响的行数发生异常解决方法
Mar 28 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 PHP
浅析51个PHP处理字符串的函数
Aug 02 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
Jul 29 PHP
如何使用php实现评委评分器
Jul 31 PHP
PHP合并discuz用户脚本的方法
Aug 04 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
PHP中类属性与类静态变量的访问方法示例
Jul 13 PHP
PHP实现的超长文本分页显示功能示例
Jun 04 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 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生成文件
2007/01/15 PHP
php函数的常用方法及注意之处小结
2011/07/10 PHP
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
JavaScript中的私有成员
2006/09/18 Javascript
在网页里看flash的trace数据的js类
2009/01/10 Javascript
JavaScript中的闭包原理分析
2010/03/08 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
Python标准库defaultdict模块使用示例
2015/04/28 Python
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
python 产生token及token验证的方法
2018/12/26 Python
python web框架 django wsgi原理解析
2019/08/20 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
java字符串格式化输出实例讲解
2021/01/06 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
康拓普公司Java笔面试
2016/09/23 面试题
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
深圳-东方伟业笔试部分
2015/02/11 面试题
在校学生职业规划范文
2014/01/08 职场文书
九年级政治教学反思
2014/02/06 职场文书
座谈会主持词
2014/03/20 职场文书
环保倡议书100字
2014/05/15 职场文书
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS