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 函数语法介绍一
Jun 14 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
Jun 02 PHP
浅析memcache启动以及telnet命令详解
Jun 28 PHP
smarty中post用法实例
Nov 28 PHP
php实现图片添加描边字和马赛克的方法
Dec 10 PHP
php有道翻译api调用方法实例
Dec 22 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
PHP中类的继承和用法实例分析
May 24 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
Feb 15 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
Laravel获取所有的数据库表及结构的方法
Oct 10 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
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
轻量级javascript 框架Backbone使用指南
2015/07/24 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
Python、 Pycharm、Django安装详细教程(图文)
2019/04/12 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
python 如何设置守护进程
2020/10/29 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
轻松掌握CSS3中的字体大小单位rem的使用方法
2016/05/24 HTML / CSS
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
大跃进口号
2014/06/16 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
文艺节目主持词
2015/07/06 职场文书
2015年科普工作总结
2015/07/23 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
OpenCV-Python实现油画效果的实例
2021/06/08 Python
mysql查询结果实现多列拼接查询
2022/04/03 MySQL