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写出自己的BLOG系统 2
Apr 12 PHP
PHP内核介绍及扩展开发指南―基础知识
Sep 11 PHP
PHP得到mssql的存储过程的输出参数功能实现
Nov 23 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
Sep 28 PHP
php使用cookie保存用户登录的用户名实例
Jan 26 PHP
PHP中addslashes与mysql_escape_string的区别分析
Apr 25 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
Sep 09 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
PHP对象实例化单例方法
Jan 19 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
Nov 25 PHP
php使用imagecopymerge()函数创建半透明水印
Jan 25 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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简介
2006/10/09 PHP
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
php并发对MYSQL造成压力的解决方法
2013/02/21 PHP
PHP生成自定义长度随机字符串的函数分享
2014/05/04 PHP
showModelessDialog()使用详解
2006/09/07 Javascript
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
JavaScript 继承详解 第一篇
2009/08/30 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
Jquery Fade用法详解
2020/11/06 jQuery
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python循环语句中else的用法总结
2016/09/11 Python
Python实现购物车功能的方法分析
2017/11/10 Python
python购物车程序简单代码
2018/04/18 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
英国标准协会商店:BSI Shop
2019/02/25 全球购物
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
舞蹈比赛获奖感言
2014/02/04 职场文书
中介业务员岗位职责
2014/04/09 职场文书
化学工程专业求职信
2014/08/10 职场文书
交通事故起诉书
2015/05/19 职场文书
干部培训工作总结2015
2015/05/25 职场文书
logback 实现给变量指定默认值
2021/08/30 Java/Android
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫