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 相关文章推荐
第八节 访问方式 [8]
Oct 09 PHP
用Socket发送电子邮件
Oct 09 PHP
拼音码表的生成
Oct 09 PHP
PHP网站基础优化方法小结
Sep 29 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
php实现水仙花数示例分享
Apr 03 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
php数组保存文本与文本反编成数组实例
Nov 13 PHP
php中memcache 基本操作实例
May 17 PHP
PHP实现简单的新闻发布系统实例
Jul 28 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
php实现JWT验证的实例教程
Nov 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
php过滤危险html代码
2008/08/18 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
jQuery select操作控制方法小结
2010/05/26 Javascript
javascript来定义类的规范小结
2010/11/19 Javascript
js 通用订单代码
2013/12/23 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
2016/08/30 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
原生js开发的日历插件
2017/02/04 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
javascript回调函数详解
2018/02/06 Javascript
react中使用swiper的具体方法
2018/05/15 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
用Python设计一个经典小游戏
2017/05/15 Python
将python代码和注释分离的方法
2018/04/21 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
pandas通过索引进行排序的示例
2018/11/16 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
Python如何定义有可选参数的元类
2020/07/31 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
夜班门卫岗位职责
2013/12/09 职场文书
导游实习生自荐书
2014/01/28 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
法人委托书
2014/07/31 职场文书
活动总结范文
2014/08/30 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
2014年基建工作总结
2014/12/12 职场文书
小学生交通安全寄语
2015/02/27 职场文书