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控制网页过期时间的代码
Sep 28 PHP
用php实现的下载css文件中的图片的代码
Feb 08 PHP
php array_unique之后json_encode需要注意
Jan 02 PHP
php遍历目录与文件夹的多种方法详解
Nov 14 PHP
php中数字0和空值的区别分析
Jun 05 PHP
PHP图片等比例缩放生成缩略图函数分享
Jun 10 PHP
自己写的php curl库实现整站克隆功能
Feb 12 PHP
orm获取关联表里的属性值
Apr 17 PHP
PHP中SQL查询语句的id=%d解释(推荐)
Dec 10 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 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
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
杏林同学录(七)
2006/10/09 PHP
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
如何打开php的gd2库
2017/02/09 PHP
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
2017/12/29 Javascript
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
python实现的防DDoS脚本
2011/02/08 Python
Python中的并发编程实例
2014/07/07 Python
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
python 常用的基础函数
2018/07/10 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
Python实现FM算法解析
2019/06/18 Python
python模块常用用法实例详解
2019/10/17 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
关于成绩下滑的自我检讨书
2014/09/20 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python