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代码
Feb 16 PHP
PHP开发中常用的三个表单验证函数使用小结
Mar 03 PHP
mysql总结之explain
Feb 27 PHP
PHP循环函数使用介绍之PHP基础入门教程
Sep 21 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
Nov 08 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
如何修改yii2.0自带的user表为其它的表
Aug 01 PHP
PHP session垃圾回收机制实例分析
Jun 28 PHP
Laravel中正确地返回HTTP状态码方法示例
Sep 10 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 PHP
PHP中echo与print区别点整理
Mar 09 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制作简单的内容采集器的代码
2007/11/28 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
jQuery 遍历map()方法详解
2016/11/04 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
Python版微信红包分配算法
2015/05/04 Python
自己使用总结Python程序代码片段
2015/06/02 Python
Python实现批量下载图片的方法
2015/07/08 Python
Python数据类型学习笔记
2016/01/13 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
python生成器用法实例详解
2019/11/22 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
使用jquery实现HTML5响应式导航菜单教程
2014/04/02 HTML / CSS
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
轻松制作精彩视频:Animoto
2018/09/19 全球购物
教师专业理论水平的自我评价分享
2013/11/09 职场文书
公司财务工作总结的自我评价
2013/11/23 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL