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与MySQL开发中页面出现乱码的一种解决方法
Jul 29 PHP
PHP 数组基础知识小结
Aug 20 PHP
HTML中嵌入PHP的简单方法
Feb 16 PHP
PHP查询附近的人及其距离的实现方法
May 11 PHP
微信支付开发维权通知实例
Jul 12 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
微信公众号开发客服接口实例代码
Oct 21 PHP
php rsa 加密,解密,签名,验签详解
Dec 06 PHP
Zend Framework前端控制器用法示例
Dec 11 PHP
php从身份证获取性别和出生年月
Feb 09 PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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
日本十大惊悚动漫
2020/03/04 日漫
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
php 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
详谈PHP编码转换问题
2015/07/28 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
微信小程序时间轴实现方法示例
2019/01/14 Javascript
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
django 自定义用户user模型的三种方法
2014/11/18 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
python实现的汉诺塔算法示例
2019/10/23 Python
Python基础之函数基本用法与进阶详解
2020/01/02 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
团工委书记自荐书范文
2013/12/17 职场文书
项目合作计划书
2014/01/09 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
涨价通知
2015/04/23 职场文书
初一年级组工作总结
2015/08/12 职场文书
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python
vue+iview实现手机号分段输入框
2022/03/25 Vue.js
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js